【问题标题】:Fill JPA fill child array (one to many) with only certain children仅使用某些子项填充 JPA 填充子数组(一对多)
【发布时间】:2019-10-03 13:17:36
【问题描述】:

我需要用子实体填充一个实体,当我需要所有子实体但现在我只想拥有几个子实体时效果很好。

比如我有Owner 1-----n Pet

如果我ownerRepositoty.findAll();我让所有的主人都拥有他所有的宠物。但是假设我想让所有拥有宠物数组的所有者只有名称以 N 开头的那些。

父实体示例:

public class Owner {
    @OneToMany(mappedBy="Owner")
    private Set<Pet> pets; //This gets filled with all pets

    //getters & setters
}

还有子实体:

 public class Pet {
        @ManyToOne
        @JoinColumn(name="owner_id", nullable=false)
        private Owner owner;

        //getters & setters
 }

我尝试在存储库查询中使用JOIN FETCH 解释here,但它只是创建了一个普通的sql JOIN,这不是我想要的。

有什么想法吗?

【问题讨论】:

    标签: sql spring hibernate jpa


    【解决方案1】:

    我找到了这样做的方法: 您可以使用@Where 注释来过滤one to manymany to many 关系的子级。

    public class Owner {
    
        @OneToMany(mappedBy="Owner")
        @Where(clause = "name like 'N%'")
        private Set<Pet> pets; //This gets filled with pets with a name starting with N
    
        //getters & setters
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      相关资源
      最近更新 更多