2012-03-31 14 views
21

Mam dwa pytania dotyczące @JoinFormula i @OneToMany adnotacji:@JoinFormula i @OneToMany definicja - słaba dokumentacja

  1. Jak mogę ograniczyć liczbę wyniku z @JoinFormula@OneToMany i adnotacji?

  2. Jak zdefiniować, że id w wyrażeniu author = id odnosi się do 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; 
    } 
    

Podobnie jak ten, wciąż mając pastArticles pusta, nawet kiedy wyjąć schedule < część klauzuli.

Dzięki!

+0

F lub 2 nie możesz, nie wiesz, czy 1 jest możliwe. Może 1 jest możliwe przy użyciu limitu zapytań SQL. – siebz0r

+0

Jeśli chodzi o ograniczenie, znalazłem to: http://stackoverflow.com/questions/7894931/onetomany-mapping-list-size-limit – siebz0r

Odpowiedz

10

Odpowiedź 1:

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

Odpowiedź 2: (tylko przykładem takiego)

public class A{ 

    @Id 
    @GeneratedValue 
    private Integer id; 

    private String uuid; 

    ... 
    } 

inna klasa

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

Niektóre wyjaśnienia byłyby miłe. Wiem, że jestem prawdopodobnie zbyt głupi, ale nie rozumiem, jak adnotacje w odpowiedzi 2 działają razem – Blauhirn

1

byłbyś lepiej wyłączyć za pomocą @Where adnotacji, aby ograniczyć wyniki

+0

Jak zrobiłbyś to, aby zadowolić punkt numer 2? – tamuren