2012-06-06 13 views
1

我有一個奇怪的問題。當我從數據庫的視圖創建行時,它很好,並且顯示非常好。但有時它會檢索一個重複的行,無論我添加同一個重複行的行會一次又一次出現。但是,當我重新部署應用程序時,問題得以解決,行再次正確顯示,直到條目再次崩潰導致相同的問題。由於沒有錯誤,我無法弄清楚發生了什麼。我使用的是EJB 3.0,glassfish 3.1.1,JSF 2.0,EclipseLink和JavaDB。EJB檢索重複行

the above one is the row in the database, the below one is in the IDE

this is how it looks like in the view

這是我持續存在的代碼:

@Override 
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 
public void create(Carrier carrier) { 
      em.persist(c.getObject()); 
      em.flush(); 
      } 
    } 

,這是我的檢索碼:

[email protected] 
public List<CrpPaypoint> getPaypoints() { 
    Query q = em.createQuery("SELECT c FROM CrpPaypoint c ORDER BY c.levelOrder.levelOrder"); 
    List<CrpPaypoint> list = q.getResultList(); 
    return list; 
} 


<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="hrtestPU" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>jdbc/hrdb</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <properties> 
     <property name="eclipselink.ddl-generation" value="create-tables"/> 
    </properties> 
    </persistence-unit> 

+0

這可能與它們都是以相同的字符串開頭的事實有關,但最後一個字符只有一個字符? – gobernador

+0

你有沒有一個persistence.xml文件,如果有的話,你可以展示它嗎? – esej

+0

如果您更改了最後兩條記錄,它是否仍會產生相同的問題? – GingerHead

回答

1

您好像在某種程度上破壞了共享緩存中的對象。

要禁用共享的緩存看到,

http://wiki.eclipse.org/EclipseLink/FAQ/How_to_disable_the_shared_cache%3F

檢查你是如何添加對象到集合,確保您的新對象有唯一的ID,請確保您不添加相同的對象兩次,或改變現有的對象。

包含您的代碼以瞭解如何編輯對象。

+0

我直接從數據庫中檢索到數據表中的視圖,沒有任何中斷,並且它們具有唯一的id(id是代碼本身)。我要禁用共享緩存並查看會發生什麼。 – fareed

+0

我試圖刷新緩存之前檢索,直到現在看起來很好,因爲問題還沒有出現。然而,我不能認爲問題解決是理所當然的,因爲正如我所說「有時」並非每次都是這樣。我會嘗試幾天並更新你,我希望這是解決方案。 – fareed