我使用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。
检查数据库 - 一切都已就绪。 为什么呢?
答案 0 :(得分:1)
执行插入后,应立即调用EntityManager#flush
。记录可能会在数据库中刷新,但EMs缓存可能尚未刷新,因此这就是您收到此结果的原因。
您还应该使用getSingleResult
代替getResultList
。
答案 1 :(得分:0)
我认为您的自动提交将是假的,并且您插入的数据将保留在会话对象中,尝试通过在插入后提交事务