创建后无法正确获取用户对象

时间:2016-05-17 13:16:54

标签: java spring hibernate jpa spring-security

我使用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。

检查数据库 - 一切都已就绪。 为什么呢?

2 个答案:

答案 0 :(得分:1)

执行插入后,应立即调用EntityManager#flush。记录可能会在数据库中刷新,但EMs缓存可能尚未刷新,因此这就是您收到此结果的原因。

您还应该使用getSingleResult代替getResultList

答案 1 :(得分:0)

我认为您的自动提交将是假的,并且您插入的数据将保留在会话对象中,尝试通过在插入后提交事务