首页 > 解决方案 > 在 Hibernate 中查找没有 id 的对象

问题描述

我正在使用弹簧。我有一个用户表。

当一个人登录系统时,他会向我发送他的凭据(即用户名和密码)。

我使用“增量生成的 uid”(即 userid 是主键)将我的用户存储在数据库中。

我还将用户名密码等存储在数据库中。我需要做的是,当用户连接到 Rest 连接时,我需要检查数据库是否有这个用户。如果他存在,那么我需要检查密码是否匹配。我需要通过用户名而不是 uid 进行检查

我的程序中根本没有会话或任何东西(或者据我所知,我根本没有在我的代码中编写任何会话或会话工厂)

我的存储库类:

public interface UserRepository extends JpaRepository<User, Long>{
}

我的用户 DAO

@Service
public class UserDAO {

    @Autowired
    UserRepository userRepository;

    public User findByUsername(String username)
    {
        //what to write here

    }
}

我已经查找了这个解决方案,但正如我上面所说,我没有会话。

标签: javaspringhibernatejpa

解决方案


Spring 确实提供了您确实需要的所有必要的依赖项和功能。

回到你的问题。您可以轻松地在 Spring 中查询非 id 字段,只需提供一个 Repository 并在其中提供具有特定命名约定的方法 Signatures 以提供适当的 Result。

您可以使用t 注入由 Spring 管理的shared EntityManager,这也使您可以访问Session@PersistenceContexEntityManager

UserRepository此外,您可以通过扩展您的from (或它的任何子项)来使用命名约定 Thingy Repository,就像您已经在做的那样,并提供一个方法签名findBy<FIELDNAME>(String value),例如,例如。findByUsername(String username).

如果您确实使用存储库方法,则不需要实现 DAO。

详细说明请看 Spring 的参考文档


推荐阅读