2016-11-23 2 views
0

У меня проблема с правильным запросом для моих данных.Весенний спящий критерий вложенный объект

@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

Это же, если и использовать 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(); 
Смежные вопросы