我有一个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;
}