Hibernate 实体查询到 Set<>

Hibernate entity query to Set<>

我的目标是编写最短的查询以通过用户 ID 获取当前测试 我的 UserEntity.class 部分:

 @ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "result", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "test_id"))
private Set<Test> tests;

这是我如何为他(我的UserDAO.class)获取所有测试的示例:

public List<Test> getAvailableTestsById(long id){
    Query query = em.createQuery("SELECT u.tests FROM User u WHERE u.id = :id");
    query.setParameter("id", id);
    return (List<Test>)query.getResultList();
}

Now i would like to get one (for example by id) test for user. How can i do that in best way? I can write long sql query with many joins but i feel that this is not an appropriate solution. Can i use my Set in UserEntity.class to find test which i need (by id)?

只是 get 用户或 load 如果您确定该用户存在,然后获取该用户的 Tests:

User user =  session.load(User.class, userId);

User user =  (User) session.get(User.class, userId);