Hibernate Nested Entity Design в списке с флагом - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть спящий класс, как показано ниже:

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
      }
}

Есть ли какие-либо предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...