我有一个类User
,其中包含联系人列表
用户类别:
@Entity
@Table(name = "profile")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(unique = true)
private String login;
@OneToMany(mappedBy = "owner", cascade = CascadeType.ALL)
private List<Contact> contacts;
...
...
}
联系类(class):
@Entity
@Table
public class Contact implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne
@JoinColumn(name = "user_profile_id")
private User owner;
...
...
}
如何通过 User.id 字段获取联系人列表?
最佳答案
不确定我是否得到了你想要的...
只需通过 ID 查找用户,您就会获得他/她的联系人。但是,该集合将被延迟加载,并且当您调用 getContacts()
或 Hibernate.initialize(user.getContacts())
时,该列表将被真正加载。如果您不想延迟加载,请将 @OneToMany 中的 FetchMode 更改为 EAGER...
例如,使用 HQL 查询:
String hql = "from User where id = :userid";
Query query = session.createQuery(hql);
query.setInteger("userid", myUserIdIWantContacts);
User user = (User) query.uniqueResult();
或标准:
Criteria cr = session.createCriteria(User.class);
cr.add(Restrictions.eq("id", myUserIdIWantContacts));
User user = (User) cr.uniqueResult();
关于java - 当实体映射为多对一时,使用 Hibernate 热获取对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37173620/