Hibernate不将数据插入Derby数据库行

Hibernate不将数据插入Derby数据库行,hibernate,derby,Hibernate,Derby,我将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, P

我将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(有两个文件,因为它是一个复合主键)

保存行的代码片段如下所示:

.
.
.
@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>

org.hibernate.ejb.HibernatePersistence
java:/Quotazioni
实体.Quotazionibancarie
实体.QuotazionibancariePK
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>

Quotazioni
org.apache.derby.jdbc.EmbeddedDriver
jdbc:derby://localhost:1527/Quotazioni;create=true
根
根
5.
20
5.
jboss:service=Derby
Quotazioni
如果我需要指定一些其他信息,请告诉我

Thx。
Stefano

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

无法成功保存数据的一些常见原因:

  • 实际上,您从数据库返回了一个错误,但是您没有检查错误,或者忽略了它
  • 您已将应用程序设置为autocommit=false,但从未提交,因此数据库正在回滚您的更改
  • 事实上,您正在保存数据,但是当您查找数据时,您没有在正确的位置(错误的数据库,或数据库中错误的模式)查找数据,因此在查找数据时看不到数据

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

    据我所知,这件事不存在区分大小写的问题,因为所有不同的名称都是自动生成的。1:我如何检查db是否为在try/catch中解析代码而给我错误?他说:我肯定我找对地方了。2:你能在第二点上给我更多的启发吗?感谢您的回复。一个好的开始是找到您的derby服务器正在编写的“derby.log”文件,并练习阅读它。一旦您找到了该日志并开始轻松阅读,您就可以在其中写入更多信息。例如,打开derby.language.logstatementtext:我发现了3个不同的derby.log文件,一个在derby_HOME/bin中,一个在JBOSS_HOME/bin中,一个在ECLIPSE_HOME中;他们中没有人写关于我尝试执行的事务的任何内容,即使在使用LogStatementText修改derby.preoperties之后,derby.log文件在运行时会写入derby的主目录中,这也是derby通常查找其数据库的地方。您是否查看了启动Derby网络服务器的位置?是的,但它写入的唯一信息是关于位置、数据和启动的信息。