1
我已經基於我在數據庫上設置的視圖創建了一個Java實體(在Eclipse中)。實體的設置在我的glassfish服務器上進行測試,同時也通過我運行的flex應用程序引用其中部署的webservice中的方法和類。JPQL查看返回的重複項
唯一的問題是行數是正確的,但返回的值都是重複的!我無法理解爲什麼會發生這種情況,並且在網絡上引用視圖時幾乎找不到任何東西,除了它應該和表格一樣工作...它的確如此,但它會返回重複的內容!
作爲一個測試,我創建了一個包含所有相同列/數據等的表作爲視圖,並指出了JPA實體 - 沒有重複!
任何人都知道我在這裏做錯了嗎?
這是代碼!
EntityManager em = null;
BigDecimal pId = new BigDecimal(conId);
try {
em = emf.createEntityManager();
String applicationQueryString = "select c from VDisc c where c.dCorId = :conId";
Query contdetQuery = em.createQuery(applicationQueryString);
contdetQuery.setParameter("conId",pId);
List list = contdetQuery.getResultList();
VDisciplines[] disc = new VDisciplines[list.size()];
disc = (VDisciplines[]) list.toArray(disc);
return disc;
詹姆斯 - 謝謝你回到我的隊友。我認爲這可能是與id的事情...我必須刪除@ Id註釋,因爲每次我跑我的查詢「VDVD c選擇c c.dCorId =:conId」它一直說它不知道什麼「ID」字段在選擇查詢中,如「SELECT ID,CON_ID ...」中所示。我認爲這是與此有關嗎?問題是,因爲它是一個視圖,所以視圖中沒有唯一標識符,只是混合在一起的ID和名稱混合在一起! – 2011-04-13 13:57:39
我在第一篇文章中添加了我的代碼。非常感謝! – 2011-04-13 14:46:14
包括你的VDisc類,它仍然必須有@Id,否則你會得到一個錯誤。如果視圖中確實沒有唯一的一組字段,則使用@Id標記所有屬性。 – James 2011-04-14 14:07:39