Интерфейсы с в спящем режиме аннотации

я задаюсь вопросом, как я смог бы аннотировать интерфейс

@Entity
@Table(name = "FOLDER_TABLE")
public class Folder implements Serializable, Hierarchy {

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "folder_id", updatable = false, nullable = false)
   private int fId;

   @Column(name = "folder_name")
   private String folderName;

   @OneToMany(cascade = CascadeType.ALL)
   @JoinTable(name = "FOLDER_JOIN_FILE_INFORMATION_TABLE", joinColumns = 
{ @JoinColumn(name = "folder_id") }, inverseJoinColumns = 
{ @JoinColumn(name = "file_information_id") })
    private List< Hierarchy > fileInformation = new ArrayList< Hierarchy >();
}

выше и ниже 2 класса, которые реализуют интерфейс под названием Иерархия, класс папки имеет список Hierarchyies, являющегося папкой или fileinformation классом

@Entity
@Table(name = "FILE_INFORMATION_TABLE")
public class FileInformation implements Serializable, Hierarchy {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "file_information_id", updatable = false, nullable = false)
  private int ieId;
  @Column (name = "location")
  private String location;
}

Я искал сеть некоторым образом для аннотирования или обходное решение, но я не могу отобразить интерфейс, который является просто этим

public interface Hierarchy {

}

Я получаю отображающееся исключение в Списке иерархий с папкой, но я не знаю, как отобразить класс правильно.

5
задан dwursteisen 13 November 2018 в 09:55
поделиться

2 ответа

Обнаружен небольшой поиск в Google ...

Вы можете использовать внутренние интерфейсы, но вы не можете отображать интерфейсы в hibernate , вам нужно сопоставлять классы, независимо от , используете ли вы сопоставление xml или сопоставление аннотаций . hibernate обрабатывает жизненный цикл ваших постоянных объектов, поэтому ему необходимо знать, какой класс нужно создать, поэтому вам нужно предоставить ему эту информацию ... Я я даже не знаю, как будет выглядеть то, что вы предлагаете ? как бы вы обеспечили реализацию для данного интерфейса перехода в спящий режим во время выполнения для создания экземпляра?

http://forum.springsource.org/showthread.php?t=67420

Похоже, вам не повезло.

1
ответ дан 13 December 2019 в 05:32
поделиться

Вы можете отображать интерфейсы в Hibernate как часть иерархии наследования. Это вполне возможно с помощью преобразования XML, как это описано, среди прочего, в главе 9 справочника Hibernate .

Отображение на основе аннотаций - это совсем другая история. Я не очень знаком с этим, но Java Persistence with Hibernate также включает примеры для этого. В соответствии с вашим случаем это будет выглядеть так:

@MappedSuperclass
public interface Hierarchy {
}

@Entity
@Table(name = "FOLDER_TABLE")
public class Folder implements Serializable, Hierarchy { ... }

@Entity
@Table(name = "FILE_INFORMATION_TABLE")
public class FileInformation implements Serializable, Hierarchy { ... }

Это отображение будет использовать таблицу для каждого конкретного класса с неявным полиморфизмом.

Однако другие источники предполагают, что поддержка аннотаций для интерфейсов, возможно, еще не работает / не стабильна:

Возможно, вам придется поэкспериментировать, в том числе изменить стратегию сопоставления наследования, возможно, превратить интерфейс в абстрактный класс (если это возможно - поскольку класс может расширять только один базовый класс) ...

{{1 }}
11
ответ дан 13 December 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: