Как использовать универсальный параметр типа с Hibernate 5?

Ниже приведено определение класса

интерфейс

public interface myInterface{

    void myMethod1();

}

MyClass1 Class, который реализует интерфейс выше

 @Entity
 public class MyClass1 implements MyInterface{

    @Id
    private int id;
    private String field1;
    private String field2;

    // Getter and setter

}

MyClass2 Class, который реализует интерфейс выше

 @Entity
 public class MyClass2 implements MyInterface{

    @Id
    private int id;
    private String field3;
    private String field4;

    // Getter and setter

}

И, наконец, класс сущности, у которого есть список с параметром типа.

@Entity
public class MyClass{

    @Id
    priviate int id;
    private String field5;
    private String field6;
    private List<? extends MyInterface> mylist;

    //getter and setter

}

Сгенерированный класс, на который я смотрю, будет выглядеть примерно так:

MyClass Table

-------------------------
id | field5 | field6
-------------------------
1  | abc    | def
2  | abc    | def
3  | abc    | def

MyClass1 Table

-------------------------
id | field1 | field2 | myclass_fk
-------------------------
1  | abc    | def    | 2
2  | abc    | def    | 2
3  | abc    | def    | 1

MyClass2 Table

-------------------------
id | field3 | field4 | myclass_fk
-------------------------
1  | abc    | def    | 3
2  | abc    | def    | 1
3  | abc    | def    | 1

Я пытался использовать @OneToMany в списке с targetType для MyInterface, но это не удалось с ошибкой не класс сущности.

РЕДАКТИРОВАТЬ

Может ли это быть достигнуто с помощью Hibernate OGM, предпочтительно с использованием графика или Mongo (документа)?

2 ответа

Решение

Я мог бы добиться этого с помощью аннотации @ManyToAny, хотя мне нужно было изменить бит класса.

Проблема в том, что Hibernate не знает, из какой таблицы загружать "mylist" при загрузке MyClass. Посмотрите на https://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/chapters/domain/inheritance.html.

Другие вопросы по тегам