2016-11-23 50 views
0

我有正确的查询我的数据的问题。Spring hibernate标准嵌套对象

@Id 
@GeneratedValue 
private Integer id; 

@Size(min = 1, message = "") 
@Column(unique = true) 
@UniqueUserName(message = "") 
private String name; 

@Size(min = 1, message = "") 
@Email 
private String email; 

@Size(min = 5, message = "") 
private String password; 

private boolean enabled; 

@ManyToMany 
@JoinTable 
private List<Role> roles; 

@OneToOne 
@JoinColumn 
private PersonalData personalData; 

@OneToMany(cascade = CascadeType.REMOVE) 
@JoinColumn(name = "OWNED_USER_ID") 
private List<User> userList; 

这是我的班级用户。我想获得用户所有拥有的用户列表。

这里是我的代码:

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class); 
detachedCriteria.setProjection(Property.forName("userList.id")); 
Session session = entityManager.unwrap(Session.class); 
Criteria criteria = session.createCriteria(OfferStorage.class); 
criteria.add(Subqueries.propertyIn("user.id", detachedCriteria)); 
criteria.list(); 

而且这回我下面的错误 无法解析属性:userList.id

如果u使用userList.user.id这是一样的。有任何想法吗?

回答

0

那么这很快。

如果有的用它还有谁会有问题有回答

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class); 
    detachedCriteria.createAlias("userList", "userList"); 
    detachedCriteria.add(Restrictions.eq("id", userId)); 
    detachedCriteria.setProjection(Property.forName("userList.id")); 

    Session session = entityManager.unwrap(Session.class); 
    Criteria criteria = session.createCriteria(OfferStorage.class); 
    criteria.add(Subqueries.propertyIn("user.id", detachedCriteria)); 
    criteria.list();