如何在 Hibernate 5 中使用泛型类型参数?
How to use generic type parameter with Hibernate 5?
下面是class定义
界面
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
}
最后是实体 class,它有一个带有类型参数的列表。
@Entity
public class MyClass{
@Id
priviate int id;
private String field5;
private String field6;
private List<? extends MyInterface> mylist;
//getter and setter
}
我正在查看的生成的 class 如下所示。
我的ClassTable
-------------------------
id | field5 | field6
-------------------------
1 | abc | def
2 | abc | def
3 | abc | def
我的Class1 Table
-------------------------
id | field1 | field2 | myclass_fk
-------------------------
1 | abc | def | 2
2 | abc | def | 2
3 | abc | def | 1
我的Class2 Table
-------------------------
id | field3 | field4 | myclass_fk
-------------------------
1 | abc | def | 3
2 | abc | def | 1
3 | abc | def | 1
我尝试将列表中的 @OneToMany
与 targetType 一起使用到 MyInterface 但它失败了,错误不是实体 class。
编辑
可以用 Hibernate OGM 实现吗,最好使用基于图形或 Mongo(文档)的方法?
问题是Hibernate在加载MyClass时不知道从table加载"mylist"。
看看https://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/chapters/domain/inheritance.html.
我可以使用 @ManyToAny 注释实现此目的,但我需要修改 class 位。
下面是class定义
界面
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
}
最后是实体 class,它有一个带有类型参数的列表。
@Entity
public class MyClass{
@Id
priviate int id;
private String field5;
private String field6;
private List<? extends MyInterface> mylist;
//getter and setter
}
我正在查看的生成的 class 如下所示。
我的ClassTable
-------------------------
id | field5 | field6
-------------------------
1 | abc | def
2 | abc | def
3 | abc | def
我的Class1 Table
-------------------------
id | field1 | field2 | myclass_fk
-------------------------
1 | abc | def | 2
2 | abc | def | 2
3 | abc | def | 1
我的Class2 Table
-------------------------
id | field3 | field4 | myclass_fk
-------------------------
1 | abc | def | 3
2 | abc | def | 1
3 | abc | def | 1
我尝试将列表中的 @OneToMany
与 targetType 一起使用到 MyInterface 但它失败了,错误不是实体 class。
编辑
可以用 Hibernate OGM 实现吗,最好使用基于图形或 Mongo(文档)的方法?
问题是Hibernate在加载MyClass时不知道从table加载"mylist"。 看看https://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/chapters/domain/inheritance.html.
我可以使用 @ManyToAny 注释实现此目的,但我需要修改 class 位。