2012-10-26 79 views
1

這裏是我的課程Alpha和Beta。 Alpha與Beta有一對一的關係Hibernate @where Annotation:用於@OnetoOne關聯反面的屬性。 (mappedBy)

我想只提取那些有Beta版本的Alpha記錄。

我無法爲Alpha創建where子句註釋,這將幫助我實現此目的。

有沒有更好的方法來安排註釋,因爲我想在獲取alpha對象時避免代碼中的任何附加查詢。

/** CLass Alpha*/ 
@Entity 
@Where(clause x =0 and y =0 and ????????) 
class Alpha {  

    @Column(name ="X") 
    int x; 

    @Column(name ="Y") 
    int Y; 

    @OneToOne(mappedBy = "alpha") 
    Beta beta; 
} 

/** Class Beta*/ 
@Entity 
class Beta {  
    @OneToOne 
    @JoinColumn(name = "ALPHA_REF") 
    Alpha alpha;  
} 

任何指針將是非常讚賞

回答

1

你可以使用命名查詢

@NamedQueries({ 
@NamedQuery(name = "<query-name>", query = "SELECT a FROM Alpha a WHERE a.beta is not null :}) 
+0

好吧......這種暫時如果我只想取回我的阿爾法記錄解決我的問題。我無法將Alpha作爲另一個由多個相似對象組成的更大查詢的一部分。 –