У меня есть спящий класс, как показано ниже:
public Entity
{
private _Enum type1;
private String type1Name;
private _Enum type2;
private String type2Name;
@Where(clause="flag=true")
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE, orphanRemoval = true)
private List<Item> type1List;
@Where(clause="flag=false")
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE, orphanRemoval = true)
private List<Item> type2List;
}
public Class Item
{
private Long id;
private String name;
// flag = true -> It is type1 item.
// flag = false -> It is type2 Item.
private boolean flag;
}
Здесь; type1
и type2
выглядят похоже, поэтому я хочу преобразовать их в объект @embeddable:
public Entity
{
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "type", column = @Column(name = "type1")),
...
})
private EntityItem restrictionItem;
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "type", column = @Column(name = "type2")),
...
})
private EntityItem applyItem;
}
@Embeddable
public EntityItem
{
private _Enum type;
private String name;
@Where ?
private List<Item> list; //?
}
Но здесь я не мог знать, как обработать условие @Where для объекта @Embeddable. Есть ли способ справиться с этим?