У меня есть спящий класс, как показано ниже:
public Entity
{
private _Enum restrictionQueryType;
private _Enum restrictionType;
private _Enum applyQueryType;
private _Enum applyType;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE, orphanRemoval = true)
private List<Item> itemList;
}
public Class Item
{
private Long id;
private String name;
// apply = true -> It is apply item.
// apply = false -> It is restriction Item.
private boolean apply;
}
Здесь; «Ограничение» и «применять» выглядят похоже, поэтому я не хочу описывать их вместе.
Поэтому я могу описать это следующим образом:
public Entity
{
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "type", column = @Column(name = "restrictionType")),
...
})
private EntityItem restrictionItem;
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "type", column = @Column(name = "applyType")),
...
})
private EntityItem applyItem;
}
@Embeddable
public EntityItem
{
private _Enum queryType;
private _Enum type;
private List<Item> list;
}
Но когда я описываю это как выше, я хочу получить List<Item> list
как отдельно в соответствии с флагом apply
.
Итак, здесь важно получить список элементов в соответствии с типом;
В первом случае:
Это выглядит так:
entity:
{
restrictionType: R1
applyType: A1
restrictionQueryType: RQ1
applyQueryType: AQ1
list:
- 1, "e1", true
- 2, "e2", true
- 3, "e3", false
- 4, "e4", false
}
Ожидаемый результат:
entity:
{
entityItem(restriction):
{
type: R1,
queryType: RQ1,
list:
- 3, "e3", false
- 4, "e4", false
}
entityItem(apply):
{
type: A1,
queryType: AQ1,
list:
- 1, "e1", true
- 2, "e2", true
}
}
Есть ли какие-либо предложения?