2012-03-31 16 views
21

Ho due domande riguardanti @JoinFormula e @OneToMany annotazioni:@JoinFormula e @OneToMany definizione - scarsa documentazione

  1. Come posso limitare il numero di risultato con @JoinFormula e @OneToMany annotazioni?

  2. Come posso definire che id nell'espressione author = id si riferisce a Author.id?

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

come questa, continuo avente le pastArticles vuoto, anche quando si rimuove la parte schedule < della clausola.

Grazie!

+0

F o 2 non puoi, non so se 1 è possibile. Forse 1 è possibile utilizzando un limite di query SQL. – siebz0r

+0

Per quanto riguarda la limitazione, ho trovato questo: http://stackoverflow.com/questions/7894931/onetomany-mapping-list-size-limit – siebz0r

risposta

10

Risposta 1:

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

Risposta 2: (solo esempio del genere)

public class A{ 

    @Id 
    @GeneratedValue 
    private Integer id; 

    private String uuid; 

    ... 
    } 

altra classe

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

Qualche spiegazione sarebbe carina. So che probabilmente sono semplicemente troppo stupido, ma non capisco come funzionano le annotazioni in Risposta 2 – Blauhirn

1

si sarebbe meglio usare il @Where annotazioni per limitare i risultati

+0

Come faresti questo per soddisfare il punto numero 2? – tamuren