私はSpringBootアプリケーションで作業していますが、Springデータ、HikariCP、JDBCを使用していますが、問題があります。SpringのデータJPAとJDBCのテンプレート
私は1つの方法の中で、User
をSpring Dataリポジトリを使用してデータベースから取得します。私はUser
上記のusername
とDBから他のいくつかの情報を取得するためにJdbcTemplate.query
を使用しますが、アプリケーションがフリーズし、私は私がjdbctemplate
ことを確認コードをデバッグする場合、いくつかの時間後に、それは
java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30006ms.
をスローDBからUser
を取得した後、 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;
}
を:
これは私が使用しているコードです。