我有一個問題,我有一個表有PersonID
(PID
)列的數量。型號JPA一對多沒有實際的父實體
我想將這些實體掛起使用PID
作爲外鍵使用JPA
一對多集合並使用EhCache進行高速緩存目的的父實體。
聽起來很簡單,麻煩的是我沒有父母實體!我沒有父母的原因是我們正在撰寫報告申請,而我們正在使用PID
來寫筆記。
我不是真的想創建一個新表,只是爲JPA
和EhCache配置存儲PID
。
我想知道我是否可以模仿一個實體或類似的東西,但對於所有的搜索我畫空白。
我有一個問題,我有一個表有PersonID
(PID
)列的數量。型號JPA一對多沒有實際的父實體
我想將這些實體掛起使用PID
作爲外鍵使用JPA
一對多集合並使用EhCache進行高速緩存目的的父實體。
聽起來很簡單,麻煩的是我沒有父母實體!我沒有父母的原因是我們正在撰寫報告申請,而我們正在使用PID
來寫筆記。
我不是真的想創建一個新表,只是爲JPA
和EhCache配置存儲PID
。
我想知道我是否可以模仿一個實體或類似的東西,但對於所有的搜索我畫空白。
沒有'虛擬'實體或類似的東西,所以你不能單獨在Hibernate中做你想要的。
我建議,雖然簡單地做它的代碼,在一個抽象層(DAO爲Person
類,基本上)兩個查詢的頂部,這樣的:
private static Person lookupPerson(Session s, int pid) {
List<Note> notes = s.createCriteria(Note.class).add(Restrictions.eq("pid", pid)).list();
List<Event> events = s.createCriteria(Event.class).add(Restrictions.eq("pid", pid)).list();
Person p = new Person(notes, events);
return p;
}
private static Person savePerson(Session s, Person p) {
for (Note note : p.getNotes()) {
s.saveOrUpdate(note);
}
for (Event event : p.getEvents()) {
s.saveOrUpdate(event);
}
}
謝謝Sharakan, 我想到了這種方法,但它不能幫助我緩存或添加到集合並獲取數據的基本功能。 Simon – SimonF 2013-03-13 18:00:07
對於堅持數據,當然可以。只需將DAO的想法作爲適配器擴展到多個查詢即可。查看我更新的'savePerson'代碼。對於ehcache,你將不得不更具體。你想要做什麼與緩存? – sharakan 2013-03-13 18:18:03
在多用戶環境中,這可能不太適用。如果兩個用戶在同一時間段內爲同一個人更新兩個不同的筆記,他們會覆蓋另一個筆記。用Hibernate/Ehcache管理集合,這不成問題。我有一種感覺,爲PID創建基本實體可能是最簡單的解決方案。 – SimonF 2013-03-13 18:38:56
你能加樣的一些例子你想運行的查詢? – sharakan 2013-03-12 18:39:15
我希望能夠擁有一組與每個PID相關的筆記和事件。 – SimonF 2013-03-13 14:18:14
因此,在一個查詢中,獲取包含對共享PID的所有Note實體和Event實體的引用的對象? – sharakan 2013-03-13 14:25:01