プロパティを持つUser
クラスがあり@OneToMany
List<Address>
ます。Hibernate は、ユーザーとアドレスの間の結合テーブルを作成しました。ユーザーがログインすると、カスタム SQL クエリを使用してユーザーを探します。
select * from user where username = ? and password = ?
これは明らかに user の他のすべてのフィールドを返しますが、List<Address>
. カスタムクエリを使用せずに Hibernate でリレーショナルデータを返す方法はありますか?
上記のカスタム クエリを使用してユーザーを読み込み、その ID を取得してから、ユーザーを再読み込みして、Hibernate がすべてのフィールドを読み込むようにすることはできますか? より良い方法はありますか?
@Entity
public class User {
@Id
@GeneratedValue
@GenericGenerator(name = "incremental", strategy = "increment")
private Long userID;
@Column(nullable = false)
private String username;
@Column(nullable = false)
private String email;
@Column(nullable = false)
private String password;
@OneToMany(fetch = FetchType.EAGER)
@JoinTable(name = "user_address",
joinColumns = @JoinColumn(name = "userID"),
inverseJoinColumns = @JoinColumn(name = "addressID"))
private List<Address> addresses;
}
@Entity
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@NonVisual
public Long addressID;
}