Как использовать AttributeConverter и @ElementCollection в упакованном списке с помощью Hibernate? - PullRequest
0 голосов
/ 30 января 2020

Мне нужно реализовать API, который предоставляет пользовательские типы данных для использования при разработке программного обеспечения. Идея состоит в том, что такие типы могут предоставлять дополнительные функции по умолчанию для языков Java.

Например:

class ViewStringList {

  // String value
  private List<String> values = new ArrayList();

  // Define if the value must be show/hide on view
  private boolean visible;

  public List<String> getValues() {
    return values;
  }

  public void hide() {
    this.visible = false;
  }

  public void show() {
    this.visible = true;
  }

}

Этот пользовательский тип можно рассматривать как расширение от Java List<String>, потому что он обеспечивает функции hide и show. Использование этого типа в качестве свойства Java хорошо, поскольку оно облегчает разработку. Однако, если я хочу сохранить каждое значение из списка ViewStringList значений в реляционной таблице, используя @ElementCollection и AttributeConverter, я не знаю, как это сделать. Например:

@Entity
class Panel {

  @ElementCollection
  private ViewStringList cars = new ViewStringList();

  @ElementCollection
  private ViewStringList trucks = new ViewStringList();

  // Getters/setters
}

class FormTemplate {

  public Panel getUserPanel() {
    Panel panel = new Panel();
    panel.getCars().show();
    panel.getTrucks().hide();
    return panel;    
  }

}

@Converter(autoApply = true)
class ViewStringConverter implemets AttributeConverter<ViewStringList, String> {

  @Override
  public String convertToDatabaseColumn(ViewStringList viewString) {
    return ?;
  }

  @Override
  public ViewStringList convertToEntityAttribute(String string) {
    return ?;
  }

}

Возможно ли это? Есть еще одна стратегия для достижения этой настойчивости?

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