使用hibernate仅从对象中的表中获取选定的列

时间:2014-03-30 11:11:19

标签: java sql hibernate

我正在使用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查询/条件来解决这个问题吗?

由于

1 个答案:

答案 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映射的地址;并且你会选择显示一些列,因为这里的休眠会返回整个对象。