2012-03-31 19 views
21

Ben @JoinFormula ve @ OneToMany ek açıklamaları ile ilgili iki soru:@JoinFormula ve @ OneToMany tanımı - fakir dokümantasyon

  1. nasıl @JoinFormula ve @OneToMany ek açıklamalarla sonucu sayısını sınırlandırabilir?

  2. author = id ifadesindeki id ifadesini Author.id? Bunun gibi

Author { 

    @Id 
    private Long id; 

    @OneToMany 
    @JoinFormula(value = "SELECT a FROM Article a WHERE author = id AND schedule < CURRENT_TIMESTAMP()") // limit = 15 
    private List<Article> pastArticles; 
} 

, ben maddesinin schedule < bölümünü kaldırmak bile boş pastArticles görüyorum.

Teşekkürler!

+0

F veya 2 yapamazsın, 1'in mümkün olup olmadığını bilmiyorum. Belki bir SQL sorgu sınırı kullanarak 1 mümkündür. – siebz0r

+0

Sınırlama gelince şunu buldum: http://stackoverflow.com/questions/7894931/onetomany-mapping-list-size-limit – siebz0r

cevap

10

Cevap 1 sonuçlarını sınırlandırmak için @Where ek açıklama kullanarak daha iyi olurdu:

@Size(max=10) 
private List<Comment> commentList; 

Cevap 2: (böyle sadece örnek)

public class A{ 

    @Id 
    @GeneratedValue 
    private Integer id; 

    private String uuid; 

    ... 
    } 

diğer sınıf

public class B{ 
     @Id 
     @GeneratedValue 
     private Integer id; 

     private String uuidOfA; 



    @ManyToOne 
    @JoinColumnsOrFormulas({ 
    @JoinColumnOrFormula([email protected](value="(SELECT a.id FROM A a WHERE a.uuid = uuid)", referencedColumnName="id")), 
    @JoinColumnOrFormula(column = @JoinColumn("uuidOfA", referencedColumnName="uuid")) 
}) 

    private A a;  
} 
+1

Bazı açıklamalar güzel olurdu. Muhtemelen çok aptal olduğumu biliyorum, ama Cevap 2'deki ek açıklamaların birlikte nasıl çalıştığını anlayamıyorum – Blauhirn

1

Eğer

+0

Bunu nasıl 2 numaralı noktayı tatmin etmek için yaparsınız? – tamuren