我在Spring Boot Application上工作,我使用Spring Data,HikariCP和JDBC,但是我遇到了問題。Spring Data JPA和JDBC模板
在一種方法中,我使用Spring Data存儲庫從數據庫中獲取特定的User
。我從我使用JdbcTemplate.query
來從DB獲得的一些其他信息與上述User
但應用程序凍結的username
DB中User
和一段時間後,它會拋出後
java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30006ms.
當我調試的代碼,我看到jdbctemplate
使用hikariCP作爲datasource
。
這是我使用的代碼:
public User getUser() {
User user = userRepository.findByUsernameAndEnabledTrue("username");
List<String> roles= getUserRoles(user.getUsername())
return user;
}
private List<String> getUserRoles(String username) {
List<String> roles = this.jdbcTemplate.query("SELECT ga.authority FROM group_authorities ga INNER JOIN group_members gm ON gm.group_id = ga.group_id INNER JOIN users u ON gm.username=u.username WHERE u.username=?;",
new Object[]{username},new ResultSetExtractor<List<String>>() {
@Override
public List<String> extractData(ResultSet resultSet) throws SQLException, DataAccessException {
List<String> roles = new ArrayList<>();
while (resultSet.next()) {
roles.add(resultSet.getString("authority"));
}
return roles;
}
});
return roles;
}
我做了一個研究如何結合使用這些並共享相同的交易或類似的東西,但可惜不能修復它。