Hibernate не вставляет данные в строки базы данных Derby - PullRequest
1 голос
/ 13 февраля 2012

Я использую 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>

Скажите, нужно ли мне указать какую-то другую информацию.

Thx. Stefano

Ответы [ 2 ]

0 голосов
/ 13 февраля 2012

Некоторые распространенные причины неудачного сохранения данных:

  1. На самом деле вы получаете ошибку, возвращенную из базы данных, но вы не проверяете ее или как-то ее игнорируете.
  2. Вы установили в своем приложении autocommit = false, но никогда не фиксировали, поэтому база данных откатывает ваши изменения
  3. Вы на самом деле сохраняете данные, но когда вы ищете их, вы не ищете правильное место (неправильная база данных или неверная схема внутри базы данных), поэтому вы не видите данные когда вы идете, чтобы найти его.

Существуют и другие причины, но сначала нужно проверить три.

0 голосов
/ 13 февраля 2012

Ваш стол - Quotazionibancarie или QuotazioniBancarie?может быть в этом была проблема

...