У меня есть одна проблема в отображении «один ко многим» с использованием спящего режима.
У меня есть 2 класса: Персона и Адрес .Персона отображается по адресу (один-ко-многим), я хочу получить все Персона, где адрес = "xxxx" ;.как подготовить этот запрос, используя DetachedCriteria .ниже я добавил кусок кода из моего класса дао.Пожалуйста, помогите мне завершить его.
Person.java
@Entity
@Table(name="PERSON")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="personId")
private int id;
@Column(name="personName")
private String name;
@OneToMany(cascade =CascadeType.ALL,fetch = FetchType.LAZY)
@JoinColumn(name="personId")
private Set <Address> addresses;
}
Address.java
@Entity
@Table(name = "ADDRESS")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "addressId")
private int id;
@Column(name = "address",nullable=false)
private String address;
@ManyToOne(cascade =CascadeType.ALL)
@JoinColumn(name="personId",nullable=false)
private Person person;
}
Мой DAO
DetachedCriteria c = DetachedCriteria.forClass(Person.class);
List<Person> persnList =null;
/*here i want add some restriction for
fetch all person whose address = "abcd"
here address is collection. how to set restriction in it ?.
*/
persnList = getHibernateTemplate().findByCriteria(c);
System.out.println(persnList.size());
выберите * от лица, где Address.address = "xxxx"; как реализовать это с помощью DetachedCriteria ?