1
我這個嘗試:春數據JPA - 懶惰的提取模式不工作的@OneToOne
@OneToOne(mappedBy = "user", fetch = FetchType.LAZY)
private UserInfo userInfo;
但上面的代碼不會懶洋洋地獲取。
而且還試圖用下面的代碼:
@Entity
@NamedEntityGraph(name = "User.detail", attributeNodes = {})
public class User extends AbstractEntity {
@Enumerated(EnumType.ORDINAL)
@Column(name = "country", nullable = false)
private Country country;
@Column(name = "mobile_no", nullable = false)
private String mobileNo;
@Column(name = "password", nullable = false)
private String password;
@OneToOne(mappedBy = "user", fetch = FetchType.LAZY)
private UserInfo userInfo;
// Getter & setter
}
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@EntityGraph(value = "User.detail", type = EntityGraphType.FETCH)
User findById(Long id);
}
這也不起作用。
有人能幫助我嗎?
是否每個用戶都有一個UserInfo?如果是這樣,您應該將關聯標記爲可選= false。否則,Hibernate不知道它是否必須將該字段設置爲null或代理,並因此強制檢查用戶是否存在UserInfo。 –
http://stackoverflow.com/questions/1444227/making-a-onetoone-relation-lazy –
@jbnizet,我嘗試使用可選= false,但它不工作。我也試過@LazyToOne(value = LazyToOneOption.PROXY),但仍然無法正常工作。 –