Null metatamodel字段与继承的@Embedded

时间:2014-05-10 03:15:31

标签: java hibernate jpa metamodel

我正在使用Hibernate 4.3.5.Final来体验带有一些嵌入式JPA元模型字段的NPE。

具体来说,我有以下情况:

  1. @Entity课程A
  2. 课程@Embedded 中的
  3. B课程A
  4. @Embedded课程C扩展课程B
  5. 无法找到静态元模型字段...'启动时的错误在这些情况下似乎很常见,但C_的所有字段都为空。

    我的代码的相关块,简化为易读性:

    @Entity
    @Table(name = "...")
    public class A extends AbstractA {
    
        // Attempting to define override in superclass
        @AttributeOverride(name = "cField", column = @Column(name = "SOME_FIELD"))
        @Embedded
        private B b;
        ...
    }
    
    
    @Embeddable
    @Access(AccessType.FIELD)
    public class B extends C {
    
      @Column(name="SOMETHING")
      private String bField;
      ...
    }
    
    
    @Embeddable
    @Access(AccessType.FIELD)
    public abstract class C implements Serializable {
        private static final long serialVersionUID = 1L;
    
        private String cField;
        ...
    }
    

    在此示例中,C_.cField为空。

    嵌入式类的相应生成元模型类是:

    @Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
    @StaticMetamodel(B.class)
    public abstract class B_ extends C_ {
        public static volatile SingularAttribute<B, String> bField;
    }
    
    @Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
    @StaticMetamodel(B.class)
    public abstract class C_ {
    
        // This object is null
        public static volatile SingularAttribute<C, String> cField; 
    }
    

    除非我刚刚搞砸了一些问题,否则一个我无法回答的关键问题是 - 一个可嵌入的类可以扩展另一个可嵌入的类吗?我使用关联而不是继承来使用它 - 即C作为@Embedded中的B字段 - 但如果可能的话,我更喜欢继承。< / p>

0 个答案:

没有答案