1

我有一个奇怪的问题。当我从数据库中的视图创建行时,它做得很好,并且显示得非常好。但有时它会检索重复的行,并且我添加相同重复行的任何行都会一次又一次地出现。但是,当我重新部署应用程序时,问题得到解决,并且行再次正确显示,直到条目再次崩溃导致同样的问题。我无法弄清楚发生了什么,因为没有错误。我正在使用 EJB 3.0、glassfish 3.1.1、JSF 2.0、EclipseLink 和 JavaDB。

上面是数据库中的行,下面是IDE中的行

这是视图中的样子

这是我的持久代码:

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

这是我的检索代码:

o@Override
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>

4

1 回答 1

1

您似乎以某种方式破坏了共享缓存中的对象。

要禁用共享缓存,请参阅,

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

检查您如何将对象添加到集合中,确保您的新对象具有唯一的 ID,确保您没有两次添加相同的对象或更改现有对象。

包括如何编辑对象的代码。

于 2012-06-07T14:27:40.977 回答