私はuserDetailsManagerを使用して新しいユーザを作成し、データベースからMyUserオブジェクトを取得しようとしています。次に例を示します。ユーザオブジェクトを作成した後で正しい方法で取得できない
User user = new User(username, passwordHash, Arrays.asList(new SimpleGrantedAuthority("ROLE_USER")));
userDetailsManager.createUser(user);
MyUser current = users.findByUsername(user.getUsername());
public MyUser findByUsername(String username) {
TypedQuery<MyUser> query = entityManager.createQuery(
"select u from User u where u.username = :username", User.class);
query.setParameter("username", username);
return query.getResultList().get(0);
}
そして、それは常にnullを返します。
DBを確認しています - すべてが整っています。 なぜですか?
後にトランザクションをコミットすることによりしようとするデータを挿入するには、 'EntityManager'のあなたの' userDetailsManager'拡張子ですか?その場合は、ユーザを作成した後に 'userDetailsManager.flush();'を呼び出してみてください。 –
いいえ、 'org.springframework.security.provisioning.JdbcUserDetailsManager'の' userDetailsManager' –