Java JPA OneToMany系列的条件

Java JPA OneToMany系列的条件,java,hibernate,jpa,Java,Hibernate,Jpa,如果我拥有该实体: @Entity class Pet { @Id long id; public enum State { ALIVE, DEAD } @Enumerated(EnumType.STRING) @... State state; @... String name; } 我可以创建如下映射: @Entity class Owner { @OneToMany(condition="state =

如果我拥有该实体:

@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;

}
@实体
类所有者{
@OneToMany(condition=“state=ALIVE”)//或者类似的东西
设置活动宠物;
@OneToMany(条件=“状态=死亡”)
设置死亡宠物;
}

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

@OneToMany
@Where(clause = "state = 'ALIVE'")
Set<Pet> alivePets
@OneToMany
@其中(子句=“状态=‘活动’”)
放飞宠物

我已经在使用一些特定于Hibernate的功能,所以没关系。我知道了,您已经更改了问题。再解释一下我的答案:@Where子句指的是您的pet表中state列的db值。所以,请检查它是否也适用于您的枚举状态。是的,我总是将枚举映射为字符串。