2012-03-31 4 views
21

Ich habe zwei Fragen @JoinFormula und @OneToMany Anmerkungen:@JoinFormula und @OneToMany Definition - schlechte Dokumentation

  1. Wie kann ich die Anzahl des Ergebnisses mit @JoinFormula und @OneToMany Anmerkungen beschränken?

  2. Wie kann ich definieren, dass id in Ausdruck author = id bezieht sich auf ?

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

Wie dies halte ich die pastArticles leer ist, auch wenn ich den schedule < Teil der Klausel zu entfernen.

Danke!

+0

F oder 2 kannst du nicht, weißt nicht ob 1 möglich ist. Vielleicht ist 1 mit einem SQL-Abfrage-Limit möglich. – siebz0r

+0

Was die Begrenzung betrifft, habe ich folgendes gefunden: http://stackoverflow.com/questions/7894931/onetomany-mapping-list-size-limit – siebz0r

Antwort

10

Antwort 1 zu begrenzen:

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

Antwort 2: (nur Beispiel so)

public class A{ 

    @Id 
    @GeneratedValue 
    private Integer id; 

    private String uuid; 

    ... 
    } 

andere Klasse

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

Eine Erklärung wäre nett. Ich weiß, dass ich wahrscheinlich einfach zu dumm bin, aber ich verstehe nicht, wie die Anmerkungen in Antwort 2 zusammen funktionieren – Blauhirn

1

würden Sie mit der @Where Anmerkung besser dran, die Ergebnisse

+0

Wie würdest du das machen, um Nummer 2 zu erfüllen? – tamuren