【问题标题】:Hibernate not inserting data into Derby database rowsHibernate 不将数据插入 Derby 数据库行
【发布时间】:2012-02-13 11:24:58
【问题描述】:

我将 eclipse 与 Jboss 6.0 服务器和 derby 嵌入式驱动程序一起使用。 我创建了一个数据库:

CREATE TABLE QUOTAZIONI.QuotazioniBancarie
(
Cliente VARCHAR(50) NOT NULL,
Prodotto VARCHAR(50) NOT NULL,
Prezzo DOUBLE NOT NULL,
Data DOUBLE NOT NULL,
CONSTRAINT primary_key PRIMARY KEY (Cliente, Prodotto, Prezzo, Data)
);

并使用 JPA 工具关联一个实体:Quotazionibancarie.java 和 QuotazionibancariePK.java(有 2 个文件,因为它是复合主键)

保留行的代码片段如下:

.
.
.
@PersistenceContext(unitName = "P1Server")
private EntityManager em;
.
.
.
EntityTransaction et = em.getTransaction();
et.begin();
Quotazionibancarie q1 = new Quotazionibancarie(q.getCliente(), q.getProdotto(),        q.getPrezzo());          
em.persist(q1);
et.commit();

其中 q 类是我为实用程序创建的类。 数据字段是自动生成的。

当我尝试将内容保存在数据库中时,服务器没有给我任何错误,但也没有保存行。

11:36:02,710 INFO  [STDOUT] Hibernate: 
11:36:02,710 INFO  [STDOUT]     insert 
11:36:02,711 INFO  [STDOUT]     into
11:36:02,711 INFO  [STDOUT]         Quotazionibancarie
11:36:02,711 INFO  [STDOUT]         (cliente, data, prezzo, prodotto) 
11:36:02,711 INFO  [STDOUT]     values
11:36:02,711 INFO  [STDOUT]         (?, ?, ?, ?)

我在论坛上进行了搜索,但没有找到任何适合我的问题的解决方案。 知道是什么导致了我的问题以及如何解决它吗?

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="P1Server" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:/Quotazioni</jta-data-source>
        <class>entities.Quotazionibancarie</class>
        <class>entities.QuotazionibancariePK</class>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.hbm2ddl.auto" value="create" />
        </properties>       
    </persistence-unit>
</persistence>

quotazioni-ds.xml

<?xml version="1.0" encoding="UTF-8" ?>
<datasources>
<local-tx-datasource>
    <!-- The jndi name of the DataSource, it is prefixed with java:/ -->
    <jndi-name>Quotazioni</jndi-name>
    <driver-class>org.apache.derby.jdbc.EmbeddedDriver</driver-class>
    <connection-url>jdbc:derby://localhost:1527/Quotazioni;create=true</connection-url>
    <user-name>root</user-name>
    <password>root</password>
    <min-pool-size>5</min-pool-size>
    <max-pool-size>20</max-pool-size>
    <idle-timeout-minutes>5</idle-timeout-minutes>
    <track-statements />
    <depends>jboss:service=Derby</depends>
</local-tx-datasource>

<mbean code="org.jboss.jdbc.DerbyDatabase" name="jboss:service=Derby">
    <attribute name="Database">Quotazioni</attribute>
</mbean>

</datasources>

如果我需要指定其他信息,请告诉我。

谢谢。 斯特凡诺

【问题讨论】:

    标签: hibernate derby


    【解决方案1】:

    您的桌子是 Quotazionibancarie 还是 Quotazionibancarie? 可能是这个问题

    【讨论】:

    • 据我所知,这件事没有区分大小写的问题,因为所有不同的名称都是自动生成的。
    【解决方案2】:

    未能成功保存数据的一些常见原因:

    1. 您实际上收到了从数据库返回的错误,但您没有检查错误或以某种方式忽略它。
    2. 您已将应用程序设置为 autocommit=false,但从未提交,因此数据库正在回滚您的更改
    3. 您实际上是在保存数据,但是当您去查找它时,您并没有在正确的位置查找(错误的数据库,或数据库内部的错误架构),因此您看不到数据当你去寻找它时。

    还有其他原因,但首先要检查这三个原因。

    【讨论】:

    • 1:我如何检查 db 是否因为在 try/catch 中环绕代码而给了我错误? 3:我确定我找对地方了。 2:你能在第二点上给我更多启发吗?感谢回复
    • 一个好的起点是找到您的 Derby 服务器正在写入的“derby.log”文件,并练习阅读它。一旦您找到该日志并能够轻松阅读它,您就可以在其中写入更多信息。比如开启derby.language.logstatementtext:db.apache.org/derby/docs/10.8/ref/rrefproper43517.html
    • 我找到了 3 个不同的 derby.log 文件,一个在 DERBY_HOME/bin,一个在 JBOSS_HOME/bin,一个在 ECLIPSE_HOME;即使在使用 logstatementtext 修改了 derby.preoperties 之后,他们也没有人写任何关于我尝试做的交易的内容
    • derby.log 文件在运行时被写入 Derby 的主目录,这也是 Derby 通常查找其数据库的地方。您是否查看了启动 Derby 网络服务器的位置?
    • 是的,但它写入的唯一信息是关于位置、数据和开始的信息。
    猜你喜欢
    • 2011-10-09
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多