我正在使用hibernate进行数据库通信。我有一节课:
@Table(name="Person")
public class Person {
@Column(name="name")
private String name;
@OneToMany
@JoinColumn(name="Address_id)
private Set<Address> address;
... <other filed similarly>
}
现在我想使用它的主键来获取这个对象,但是对象应该只填充特定的列?
我尝试使用条件和投影,它返回一个结果,但它没有映射到我期望的对象(Person Object)
知道如何使用hibernate查询/条件来解决这个问题吗?
由于
答案 0 :(得分:0)
必须正确编写使用的休眠注释。
假设您有两个实体:人员和地址。
@Table(name="Person")
public class Person {
@Column(name="name")
private String name;
@OneToMany
@JoinColumn(name="Address_id")
private Set<Address> address;
... <other filed similarly>
}
另一方面,你有地址等级
@Table(name="addresses")
public class Address{
@Column(name="name")
private String addressName;
@ManyToOne
private Person person;
}
当您使用以下方法时使用此映射:
public Encounter getAddressById(int idAddress) {
session = sf.getCurrentSession();
session.beginTransaction();
Address address = (Address ) session.load(Address .class, idAddress);
return address ;
}
这应该返回与person映射的地址;并且你会选择显示一些列,因为这里的休眠会返回整个对象。