Person
とAddress
という2つのテーブルがあります。これらのテーブルは、と1対多のを、アノテーションを使ってhibernateでマッピングしました。1対多の単方向ハイバネーションマッピングは子テーブルを保存しません
私の親エンティティPerson
私はSet<Address>
を作成して子クラスを保持します。その後、アドレスのセットを作成し、Person
エンティティに設定し、Personの独自の値も設定します。
私の問題は、親エンティティを保存するときに、子がDBに保存しないということです。
Person.java
@Entity
@Table(name="PERSON")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="personId")
private int id;
@Column(name="personName")
private String name;
@OneToMany(cascade =CascadeType.ALL,fetch = FetchType.EAGER)
@JoinColumn(name="personId")
private Set <Address> addresses;
Address.java
@Entity
@Table(name = "ADDRESS")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "addressId")
private int id;
@Column(name = "address")
private String address;
@Column(name="personId")
private int personid;
マイDAO:
public Person addNewPerson() {
Person per = new Person();
per.setName("aaaa person");
Set<Address> addressSet = new HashSet<Address>();
for(int i = 0; i<=3;i++){
Address ad = new Address();
ad.setAddress("aaa "+i);
addressSet.add(ad);
}
per.setAddresses(addressSet);
getHibernateTemplate().save(per);
}
ここ
は私のコードです
ここで人は私のテーブルに追加していますが、アドレスは保存されません。どうして?
双方向それは可能であるが、単方向で私personId
列が二回マッピングされている問題
私はaddressからpersonIdを削除してから上記の手順を繰り返します – jaleel
あなたは1つのアプリケーションを提案できますか? – jaleel
申し訳ありませんが正常に動作しています。 – jaleel