Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA Hibernate 5:OneTONE在嵌套可嵌入中导致元模型问题_Jpa_Hibernate 5.x_Metamodel - Fatal编程技术网

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的单数属性

似乎在使用多个嵌套嵌入时,出现了一些问题。当只使用一个嵌入级别时,它可以工作

我试过其他东西:

  • 正在类上添加Access.Field。什么也没发生
  • 实例化@Embedded类,如@Embedded Language=new Language()。什么也没发生
  • 将@OneToOne替换为@ManyToOne。什么也没发生

  • 这听起来像是JPA提供者中的一个bug,您应该向他们报告

    我使用的JPA提供程序(DataNucleus)创建
    公共静态属性标识码


    您可以选择只使用类路径中的
    datanucleus jpa query.jar
    生成静态元模型,并将这些生成的类与现有提供程序一起使用,或者将其用于持久性。

    听起来像是jpa提供程序中的一个bug。我使用的JPA提供者(不是Hibernate)创建了一个
    公共静态属性标识符代码
    @DN1您使用的是哪一个版本?我想用你的providerDataNucleus JPA试试这个。一个选择是在类路径中使用
    datanucleus jpa query.jar
    生成静态元模型,并将这些生成的类与现有的提供者一起使用,或者也可以将其用于持久性。好主意!我用datanucleus替换了hibernate JAR,并成功地生成了它!我将记录一个bug。。如果你愿意的话,你可以把它作为答案加上去。。