为啥我的数据没有得到持久化?
Posted
技术标签:
【中文标题】为啥我的数据没有得到持久化?【英文标题】:Why my data does not get persisted?为什么我的数据没有得到持久化? 【发布时间】:2010-09-01 18:33:29 【问题描述】:我在我的应用程序中使用 JPA 和 Java Embedded DB。我尝试将一些数据写入数据库,当我尝试将其读回时,我能够做到。但是应用程序已关闭,当我再次打开它时,没有任何数据存在。
这是我的 persistence.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
<persistence-unit name="myMoneyPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>mymoney.Money</class>
<properties>
<property name="eclipselink.jdbc.password" value="adminadmin"/>
<property name="eclipselink.jdbc.user" value="admin"/>
<property name="eclipselink.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
<property name="eclipselink.jdbc.url" value="jdbc:derby:pocketmoney;create=true"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>
我的数据库 URL 有问题吗。
jdbc:derby:pocketmoney
【问题讨论】:
我不知道 Derby 是否记录日志,但如果有,您应该检查是否有任何连接类型错误或查询问题。 【参考方案1】:我的数据库 URL 有问题吗?
不,它是正确的,应该在当前工作目录中创建一个数据库。
调试问题的一些想法:
使用绝对路径进行完全控制jdbc:derby:/path/to/pocketmoney;create=true
。
检查数据是否已写入(即文件是否更改)。
使用以下属性激活 EcliseLink 日志记录以查看究竟发生了什么:
<properties>
...
<property name="eclipselink.debug" value="ALL"/>
<property name="eclipselink.logging.level" value="FINEST" />
<property name="eclipselink.logging.level.sql" value="FINEST" />
<property name="eclipselink.logging.level.cache" value="FINEST" />
</properties>
仔细检查您是否正确地提交了事务(您是说您的代码正在执行某些操作,但您没有显示它,因此仍有疑问)。
参考文献
Derby JDBC database connection URL EclipseLink/Examples/JPA/Logging【讨论】:
以上是关于为啥我的数据没有得到持久化?的主要内容,如果未能解决你的问题,请参考以下文章