@JoinFormula 和 @OneToMany 定义 - 糟糕的文档

Posted

技术标签:

【中文标题】@JoinFormula 和 @OneToMany 定义 - 糟糕的文档【英文标题】:@JoinFormula and @OneToMany definition - poor documentation 【发布时间】:2012-04-14 20:16:27 【问题描述】:

我有两个关于@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 < CURRENT_TIMESTAMP()") // limit = 15
        private List<Article> pastArticles;
    
    

像这样,即使我删除了子句的schedule &lt; 部分,我仍然将过去的文章留空。

谢谢!

【问题讨论】:

2 不行,不知道 1 是否可行。使用 SQL 查询限制也许 1 是可能的。 至于我发现的限制:***.com/questions/7894931/… 【参考方案1】:

答案 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;      

【讨论】:

一些解释会很好。我知道我可能太愚蠢了,但我不明白答案 2 中的注释是如何协同工作的【参考方案2】:

最好使用@Where 注释来限制结果

【讨论】:

以上是关于@JoinFormula 和 @OneToMany 定义 - 糟糕的文档的主要内容,如果未能解决你的问题,请参考以下文章

如何正确映射@OneToMany 和@ManyToOne 关系,以便我可以保存和更新@OneToMany 端(有或没有@ManyToOne 端)

JPA、OneToMany 和 ManyToOne

@OneToMany 和 @ElementCollection 之间的区别?

休眠 OneToMany 和 ManyToOne?

OneToMany 和 ManyToMany 单向关系的区别

Jpa中ManyToMany和OneToMany的双向控制