2011-09-02 63 views
1

我嘗試用Java和Hibernate實現文檔修改跟蹤系統。文檔的每個模塊都保存有autor和時間戳。要獲得文檔的創建者,我需要獲得最早的mod。那就是:由查詢定義的Hibernate實體屬性

@Entity 
@Table(name="Modifications") 
public class Modification 
{ 
    String autor; 
    Date dateTime; 
    Document document; 

    @ManyToOne 
    public Document getDocument() { 
    ... 
    } 

    // Author of this mod 
    @Column(name="Autor") 
    public String getAutor() { 
     ... 
    } 

    // and other properties 
} 

@Entity 
@Table(name="Documents") 
public class Document 
{ 
    private List<Modification> modifications; 

    @OneToMany(mappedBy="document") 
    public List<Modification> getModifications() { 
    ... 
    } 

    // this property is question about. How should I implement this with hibernate? 
    //I don't want to store "autor" field in entity, 
    //it should be determined with query to modifications table. 
    // But I can't find any example of defining properties this way... 
    // So I need your advices :) 
    public String getAutor() { 
    ... 
    } 

    // other properties 
} 

回答

1

我沒有實現在getAutor()方法查詢,至少不會在實體。 IMO entites不應該自己執行查詢。

那麼爲什麼你不提供一些服務/ DAO的方法,根據需要提供作者? 或者,您可能想爲文檔中的作者創建一個臨時字段,並讓它由dao填充。這樣,您只需加載一次作者並多次訪問該信息。

1

我猜你試圖通過註釋做到這一點。您可以嘗試在修改列表中設置@OrderBy,並讓getAutor()函數檢索第一個(或最後一個)實體。

儘管我更喜歡托馬斯的方法論,以便更好地分離出邏輯。