Hibernate嵌入式层次结构

时间:2017-04-19 08:19:28

标签: hibernate

我想在我的实体中嵌入一个对象。即我想将该类型与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

有没有办法实现这个目标?

0 个答案:

没有答案