同様の問題を検索して見つけましたが、同じ問題ではないようです
- この NullPointer 例外が発生するのはなぜですか?
- hibernate/JBoss/Seam を使用した OneToOne マッピング
- ANN-613 - @OneToOne で mappingBy プロパティが間違っている場合の NPE
- ANN-558 - @OneToMany(mappedBy="") は親クラスのプロパティを認識できません
- Hibernate ユーザー - @OneToOne の @Id を持つ NPE
次のようにマッピングされたエンティティがいくつかあります。
Person
|
+--User
PersonPartDeux
にOneToOne マッピングを持つ新しいエンティティを追加したいと考えていPerson
ます。結果のマッピングは次のようになります。
Person + PersonPartDeux
|
+--User
そうすると、NullPointerException
マッピングをロードしようとしているときに a がスローされます。
java.lang.NullPointerException
at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:135)
この例外を回避できるようにマッピングを指定するにはどうすればよいですか?
これが私のコードです:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Person implements Serializable
{
@Id
@GeneratedValue
public Long id;
@Version
public int version = 0;
public String name;
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
public PersonPartDeux personPartDeux;
}
@Entity
public class PersonPartDeux implements Serializable
{
@Id
@GeneratedValue(generator = "person-primarykey")
@GenericGenerator(
name = "person-primarykey",
strategy = "foreign",
parameters = @Parameter(name = "property", value = "person")
)
public Long id = null;
@Version
public int version = 0;
@OneToOne(optional=false, mappedBy="person")
public Person person;
public String someText;
}
@Entity
@PrimaryKeyJoinColumn(name = "person_Id")
public class User extends Person
{
public String username;
public String password;
}
OneToOne
なぜ面倒なのかというと、アプリケーションのさまざまな既知の問題を解決するには、継承とマッピングの両方が必要です。