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
如果您确定该用户存在,然后获取该用户的 Test
s:
User user = session.load(User.class, userId);
或
User user = (User) session.get(User.class, userId);
我的目标是编写最短的查询以通过用户 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
如果您确定该用户存在,然后获取该用户的 Test
s:
User user = session.load(User.class, userId);
或
User user = (User) session.get(User.class, userId);