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值。所以,请检查它是否也适用于您的枚举状态。是的,我总是将枚举映射为字符串。