4

Hibernate 4.3.5.Final を使用して、いくつかの埋め込み JPA メタモデル フィールドで NPE が発生しています。

具体的には、次のような状況があります。

  1. @EntityクラスA
  2. @EmbeddedクラスBインクラスA
  3. @EmbeddedクラスC拡張クラスB

起動時に「静的メタモデル フィールドが見つかりません...」というエラーが表示されることはありませ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は、null です。

埋め込みクラスに対応して生成されるメタモデル クラスは次のとおりです。

@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として持っています-しかし、可能であれば継承を好みます。@EmbeddedB

4

0 に答える 0