我在Java EE 5(IBM RAD 7.5和WebSphere 7)中使用JPA。我已經簡化了我的問題到以下示例...爲什麼不是簡單的JPA ManyToOne關係工作?
我有一個項目和一個用戶。這些表是這樣的:
PROJECT
--
id
name
projectmanagerid // is a User
USER
--
id
username
我的課是這樣的:
@Entity
@Table(name="PROJECT")
class Project
@Id
@GeneratedValue(...)
Long id;
String name;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="projectmanagerid");
User projectManager;
@Entity
@Table(name="USER")
class User
@Id
@GeneratedValue(...)
Long id;
String username;
要找回我的項目我這樣做:
Query query = em.createQuery("select distinct p from Project p");
query.getResult...
一切正常,除了project.projectManager
總是null
。
不應該FetchType.EAGER
導致用戶填充?我究竟做錯了什麼?
任何建議,非常感謝!
羅布
是因爲你希望你發出查詢之前(即不爲空),在數據庫中projectmanagerid場填充? – digitaljoel
如果它爲空,則外鍵爲空。提取類型是否渴望不會改變任何內容。如果它是懶惰的,你將有一個非初始化的代理給用戶,但不是空的。 –
是的,projectmanagerid字段填充在數據庫中。有任何想法嗎?某處或某處的XML文件中是否存在某個配置值?我無法弄清楚我錯過了什麼。 –