2014-03-30 67 views
0

我正在使用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對象)

不知道如何使用Hibernate查詢/標準解決這個問題?

謝謝

+0

是你在找什麼:http://stackoverflow.com/q/11626761/1292605? – Pith

回答

0

使用的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> 

} 

而且對你有地址類

@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 ; 
} 

這應返回與人的映射地址;並顯示一些列將由您選擇,因爲休眠在這裏返回整個對象。