2012-03-31 14 views
21

tengo dos preguntas relativas a @JoinFormula y @OneToMany anotaciones:@JoinFormula y @OneToMany definición - la escasa documentación

  1. ¿Cómo puedo limitar el número de resultado con @JoinFormula@OneToMany y anotaciones?

  2. ¿Cómo puedo definir que id en la expresión author = id se refiere 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; 
    } 
    

como no, sigo teniendo los pastArticles vacío, incluso cuando quito la parte schedule < de la cláusula.

Gracias!

+0

F o 2 no puedes, no sé si 1 es posible. Tal vez 1 es posible usando un límite de consulta SQL. – siebz0r

+0

En cuanto a la limitación, encontré esto: http://stackoverflow.com/questions/7894931/onetomany-mapping-list-size-limit – siebz0r

Respuesta

10

Respuesta 1:

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

Respuesta 2: (solo ejemplo de esa manera)

public class A{ 

    @Id 
    @GeneratedValue 
    private Integer id; 

    private String uuid; 

    ... 
    } 

otra clase

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

Alguna explicación sería agradable. Sé que probablemente soy demasiado estúpido, pero no entiendo cómo funcionan las anotaciones en la Respuesta 2 juntas – Blauhirn

1

que sería mejor usar la anotación @Where para limitar los resultados

+0

¿Cómo harías para satisfacer el punto número 2? – tamuren