@JoinFormulaアノテーションと@OneToManyアノテーションに関して2つの質問があります。
@JoinFormula
および@OneToMany
アノテーションを使用して結果の数を制限するにはどうすればよいですか?
式author = id
のid
が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;
}
このように、句のschedule <
部分を削除しても、pastArticlesは空のままです。
ありがとう!
回答1:
@Size(max=10)
private List<Comment> commentList;
回答2 :(そのような例)
public class A{
@Id
@GeneratedValue
private Integer id;
private String uuid;
...
}
他のクラス
public class B{
@Id
@GeneratedValue
private Integer id;
private String uuidOfA;
@ManyToOne
@JoinColumnsOrFormulas({
@JoinColumnOrFormula(formula=@JoinFormula(value="(SELECT a.id FROM A a WHERE a.uuid = uuid)", referencedColumnName="id")),
@JoinColumnOrFormula(column = @JoinColumn("uuidOfA", referencedColumnName="uuid"))
})
private A a;
}
結果を制限するには、@Where
アノテーションを使用することをお勧めします