我想在我的实体中嵌入一个对象。即我想将该类型与MyEntity
放在同一个表中@Entity
public class MyEntity<T extends MyType> {
@Id
long id;
@Any(metaColumn = @Column(name = "MY_TYP"))
@AnyMetaDef(
idType = "integer",
metaType = "string",
metaValues = {
@MetaValue(value = "ConcreteType", targetEntity = ConcreteType.class)
})
@JoinColumn(name = "MY_ENTITY_ID")
T typ;
}
实体看起来像上面那样。如果MyType是实体层次结构,则此方法有效。但是我想在我的MY_ENTITY表中嵌入Type。
所以我想要像:
@Entity
public class MyEntity<T extends MyType> {
@Id
long id;
@Embedded
@Any(metaColumn = @Column(name = "MY_TYP"))
@AnyMetaDef(
idType = "integer",
metaType = "string",
metaValues = {
@MetaValue(value = "ConcreteType", targetEntity = ConcreteType.class)
})
T typ;
}
使用MyType:
public interface MyType {
}
和ConcreteType
@Embeddable
@Access(AccessType.FIELD)
public class ConcreteType implements MyType {
long myField;
}
两个对象都应保存在同一个表中。
表:MY_ENTITY
列:ID,MY_TYP,MY_FIELD
有没有办法实现这个目标?