私は冬眠するのが初めてです。
UserDetails と Address の 2 つのクラスがあります。これら 2 つの関係は One-To-Many です。詳細は次のとおりです (getter と setter をスキップ)
UserDetails.java
@Entity
@Table(name = "UserDetails")
public class UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "userId")
private int userId;
@Column(name = "UserName")
private String userName;
@OneToMany
@JoinColumn(name = "address")
private Collection<Address> address = new ArrayList<Address>();
}
アドレス.java
@Entity
@Table(name = "address")
public class Address {
@Id
@GeneratedValue
@Column(name = "id")
private int id;
@Column(name = "city")
private String city;
}
App.java
UserDetails ud=new UserDetails();
ud.setUserName("User 1");
Address ad1=new Address();
ad1.setCity("Mumbai");
Address ad2=new Address();
ad1.setCity("Pune");
ud.getAddress().add(ad1);
ud.getAddress().add(ad2);
Session session=factory.openSession();
session.beginTransaction();
session.save(ud);
session.save(ad1);
session.save(ad2);
session.getTransaction().commit();
session.close();
hibernate.cfg.xml プロパティ name="hbm2ddl.auto" で update に設定されています 上記のコードを実行した後、データベースのエントリは
UserDetails テーブル
userId UserName Address
1 User 1 NULL
アドレス テーブル
Id City Address
1 Pune 1
2 NULL 1
私の質問は、休止状態が、新しいテーブルを作成する代わりに、アドレス テーブルの UserDetails Address=NULL および City=NULL に挿入する理由です。