JPA OneToMany 集合的条件

2022-09-01 09:48:27

如果我有这个实体:

@Entity
class Pet {

    @Id
    long id;

    public enum State { ALIVE, DEAD }

    @Enumerated(EnumType.STRING)
    @...
    State state;

    @...
    String name;

}

我可以创建如下映射吗:

@Entity
class Owner {

    @OneToMany(condition="state = ALIVE") // or something like that
    Set<Pet> alivePets;

    @OneToMany(condition="state = DEAD")
    Set<Pet> deadPets;

}

答案 1

据我所知,这不是JPA规范的一部分。至少Hibernates JPA实现提供了一个可以使用的自己的注释:@Where

@OneToMany
@Where(clause = "state = 'ALIVE'")
Set<Pet> alivePets

答案 2

推荐