2013-08-09 3 views
0

Я сопоставил свои реляционные таблицы bbdd с объектами Java.Как использовать критерии с реляционными отображаемыми объектами?

@Entity 
@Table(name = "user") 
public class User implements Serializable{ 

// Another attributes... 
@OneToOne 
@JoinColumn(name = "id") 
private UserAccount userAccount; 

// Getters and setters... 

} 

@Entity 
@Table(name = "user_account") 
public class UserAccount implements Serializable{ 

@Id 
@GenericGenerator(name = "generator", strategy = "foreign", 
     parameters = 
     @Parameter(name = "property", value = "user")) 
@GeneratedValue(generator = "generator") 
@Column(name = "user_id", unique = true, nullable = false) 
private int user_id; 
// Another attributes... 

// Getters and setters... 

} 

У меня есть один такой Критерий.

Criterion crit = Restrictions.and(
       Restrictions.like("userAccount.email", email), 
       Restrictions.like("userAccount.password", MD5.crypt(password))); 

Но я получаю эту ошибку.

org.hibernate.QueryException: could not resolve property: User of: com.mypackage.entity.User 

Как я могу получить доступ к UserAccount.email от пользователя через критерии?

+0

Показать полный код создания критериев, из которых вы получаете свой результат – harrybvp

ответ

1

Вы должны создать новые критерии для каждого соединения:

Criteria criteria = session.createCriteria(User.class) 
     .createCriteria("userAccount").add(Restrictions.and(
       Restrictions.like("email", email), 
       Restrictions.like("password", MD5.crypt(password)));d 
+0

Привет Амин, хорошо ваш вопрос, только я должен был удалить UserAccount внутри Restrictions.like. – Dani

+0

Но теперь у меня есть еще одно сомнение: если я буду использовать один атрибут пользователя с другим атрибутом useraccount в тех же критериях, как я могу это сделать? – Dani

+0

Сделайте это, прежде чем создавать объединенные критерии –

Смежные вопросы