Hibernateの学習。 Hibernate OneToOneテーブル結合
public class User {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column(name = "first_name")
Private String firstName;
@Column(name = "last_name")
private String lastName;
@OneToOne(fetch = FetchType.EAGER)
@JoinTable(name = "user_country_region", joinColumns ={@JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "country_id") })
private Country userCountry;
@OneToOne(fetch = FetchType.EAGER)
@JoinTable(name = "user_country_region", joinColumns = {@JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "region_id") })
private Region userRegion;
//With its respective Getters and Setters
}
public class Country {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column(name = "name")
private String name;
//With its respective Getters and Setters
}
public class Region {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column(name = "name")
private String name;
//With its respective Getters and Setters
}
問題が直面しています次のように私は、国を以下のクラスのユーザー、リージョンを持っていることは休止状態クエリは領域だけではなく国を返すです。これを引き起こす原因は何ですか?
は、Hibernateを表示するSQLから
System.out.println("Country: "+user.getCountry().getName());
System.out.println("Region: "+user.getRegion().getName());
レスポンス以下のように国と地域の値を取得しようとしました。国の詳細が不足しているようだ。
Hibernate:
select
this_.id as id1_3_3_,
this_.first_name as first_na2_3_3_,
this_.last_name as last_na3_3_3_,
region2_.id as id1_8_2_,
region2_.name as name2_8_2_
from
user this_
left outer join
user_country_region this_1_
on this_.id=this_1_.user_id
left outer join
region region2_
on this_1_.region_id=region2_.id
where
this_.id=?
テーブルの名前を確認してください。 user_country_region、user_coutnry_region?どちらも正しいですか?基本的なことから始めるだけですか? – LearningPhase
はい、同じです。テーブル内のフィールドはuser_id、country_id、region_idのようになります。この表は3つを結合します。 –
は、ユーザー国と地域をどのように初期化しようとしていたかで質問を更新しました。 –