JPA Hibernate 5:OneTONE在嵌套可嵌入中导致元模型问题
我有一个实体:JPA Hibernate 5:OneTONE在嵌套可嵌入中导致元模型问题,jpa,hibernate-5.x,metamodel,Jpa,Hibernate 5.x,Metamodel,我有一个实体: @Entity public class Test { @Embedded Content content; // getters setters.. } 如您所见,它包含一个嵌入式类: @Embeddable public class Content { @OneToOne Person person; @Embedded Language language; // getters setters.. } 这又包含了
@Entity
public class Test {
@Embedded
Content content;
// getters setters..
}
如您所见,它包含一个嵌入式类:
@Embeddable
public class Content {
@OneToOne
Person person;
@Embedded
Language language;
// getters setters..
}
这又包含了一个可嵌入的。2次嵌套可嵌入
@Embeddable
public class Language {
String format;
@OneToOne
IdentifierCode identifierCode;
// getters setters..
}
使用JPA的自动模式生成功能时,所有列都以正确的方式生成
我在每个@Entity和@Embeddeble上使用@Data注释来生成getter、setter、constructor等
启动应用程序服务器(EAP 7)时,我在日志中注意到以下警告:
HH015011:找不到静态元模型字段:
org.package.Language#identifierCode;这可能表示,也可能不表示
静态元模型的问题
事实上,当打开元模型类语言时;不存在标识符代码列引用:
@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
@StaticMetamodel(Language.class)
public abstract class Language_ {
public static volatile SingularAttribute<Language, String> format;
}
@Generated(value=“org.hibernate.jpamodelgen.jpametamodelenticyprocessor”)
@静态元模型(Language.class)
公共抽象类语言{
公共静态属性格式;
}
我不明白我在干什么。在嵌套的@Embeddeble中不能使用@OneToOne吗?元模型内容uu正确生成person的单数属性
似乎在使用多个嵌套嵌入时,出现了一些问题。当只使用一个嵌入级别时,它可以工作
我试过其他东西:
这听起来像是JPA提供者中的一个bug,您应该向他们报告 我使用的JPA提供程序(DataNucleus)创建
公共静态属性标识码代码>
您可以选择只使用类路径中的datanucleus jpa query.jar
生成静态元模型,并将这些生成的类与现有提供程序一起使用,或者将其用于持久性。听起来像是jpa提供程序中的一个bug。我使用的JPA提供者(不是Hibernate)创建了一个公共静态属性标识符代码
@DN1您使用的是哪一个版本?我想用你的providerDataNucleus JPA试试这个。一个选择是在类路径中使用datanucleus jpa query.jar
生成静态元模型,并将这些生成的类与现有的提供者一起使用,或者也可以将其用于持久性。好主意!我用datanucleus替换了hibernate JAR,并成功地生成了它!我将记录一个bug。。如果你愿意的话,你可以把它作为答案加上去。。