我已经厌倦了EclipseLink。我不能在我的数据库中保留一个对象。我使用netbeans 7.3。我开始设计Web应用程序时遇到了这个问题。以下是我采用的方法。可能是我没有意识到错误。
在netbeans完成生成项目文件后,我配置了jndi。然后我自动转换为netbeans,实体对象中的数据库表。 here is the link
然后,从这些课程中,我创建了他们的JPAController。 (始终自动使用netbeans)
最后,作为测试,我只是实例化" Outils"并将字段留空ID。由于后者在数据库中自动递增,如果持久性很好,我在控制台出现时应该有一个id。
<body>
<h1>Hello World!</h1>
<%
Outils o = new Outils();
o.setDesignation("hammers");
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Test_EclipseLinkPU");
UserTransaction utx = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction");
OutilsJpaController o_ctrl = new OutilsJpaController(utx, emf);
o_ctrl.create(o);
out.println("this is the id of hammer " + o.toString());
%>
</body>
我得到的结果是:Outils [id = null]。
我没有错误或者没有关于调试器的更多信息。
Ps:这是persistence.xml文件
<?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="Test_EclipseLinkPU" transaction-type="JTA">
<jta-data-source>test_data_source</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>
</persistence>
感谢您的未来在您的答案中并倾听任何其他信息。
答案 0 :(得分:0)
(不是真正的答案,但我无法在评论中显示) 要增加日志记录,您的persistence.xml应如下所示:
<?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="Test_EclipseLinkPU" transaction-type="JTA">
<jta-data-source>test_data_source</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.logging.level" value="FINE"/>
<property name="eclipselink.logging.level.sql" value="FINE"/>
<property name="eclipselink.logging.parameters" value="true"/>
</properties>
</persistence-unit>
</persistence>
答案 1 :(得分:0)
在将任何内容写入数据库之前,您需要提交或刷新事务。如果您正在使用IDENTITY排序(我强烈建议不使用IDENTITY,如果db支持它,请使用TABLE或SEQUENCE),然后在插入发生之前无法分配Id,因此persist()不会分配Id(就像它所做的那样)表和序列)。
你的create()方法有什么作用?你的Id如何映射?