Java @JoinFormula和@OneToMany定义-文档质量差
关于@JoinFormula和@OneToMany注释,我有两个问题:Java @JoinFormula和@OneToMany定义-文档质量差,java,hibernate,persistence,Java,Hibernate,Persistence,关于@JoinFormula和@OneToMany注释,我有两个问题: 如何使用@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 < CUR
@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;
}
作者{
@身份证
私人长id;
@独身癖
@JoinFormula(value=“从文章a中选择一个,其中author=id,schedule
这样,即使我删除了
计划您最好还是使用@Where
注释来限制结果,我还是让过去的文章保持空白
@Size(max=10)
private List<Comment> commentList;
其他类
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;
}
对于2,你不能,不知道1是否可能。也许1可以使用SQL查询限制。至于限制,我发现:一些解释会很好。我知道我可能太笨了,但我不明白答案2中的注释是如何协同工作的
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;
}