我有一个奇怪的问题。当我从数据库中的视图创建行时,它确实很好,并且显示非常好。但有时它会检索一个重复的行,而我添加相同重复行的任何行都会一次又一次出现。但是,当我重新部署应用程序时,问题得到解决,行再次正确显示,直到条目再次崩溃导致相同的问题。由于没有错误,我无法弄清楚发生了什么。我正在使用EJB 3.0,glassfish 3.1.1,JSF 2.0,EclipseLink和JavaDB。
这是我坚持不懈的代码:
@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>
答案 0 :(得分:1)
您似乎在某种程度上破坏了共享缓存中的对象。
要禁用共享缓存,请参阅
http://wiki.eclipse.org/EclipseLink/FAQ/How_to_disable_the_shared_cache%3F
检查如何将对象添加到集合中,确保新对象具有唯一ID,确保不要将同一对象添加两次,或更改现有对象。
包含有关如何编辑对象的代码。