2011-07-04 12 views
3

私はHibernateに問題があります。私は、データベースにオブジェクトを保存したい場合は、私はこの例外を取得:org.hibernate.exception.GenericJDBCException:次のシーケンス値を取得できませんでした

org.hibernate.exception.GenericJDBCException: could not get next sequence value 
25P02, current transaction is aborted, commands ignored until end of transaction block 

マイHibernate設定ファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
            "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory name=""> 
    <!-- Database connection settings --> 
    <property name="connection.driver_class">org.postgresql.Driver</property> 
    <property name="connection.url">jdbc:postgresql://localhost:5432/3encult</property> 
    <property name="connection.username">3encult</property> 
    <property name="connection.password">3encult</property> 
    <!-- JDBC connection pool (use the built-in) --> 
    <property name="connection.pool_size">10</property> 
    <!-- SQL dialect --> 
    <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> 
    <!-- Enable Hibernate's automatic session context management --> 
    <property name="current_session_context_class">thread</property> 
    <!-- Disable the second-level cache 
    Echo all executed SQL to stdout --> 
    <property name="show_sql">true</property> 
    <!-- Drop and re-create the database schema on startup 
    <property name="hbm2ddl.auto">create</property>--> 
    <mapping resource="resources/User.hbm.xml"/> 
    <mapping resource="resources/ApplicationField.hbm.xml"/> 
    <mapping resource="resources/Attribute.hbm.xml"/> 
    <mapping resource="resources/Device.hbm.xml"/> 
    <mapping resource="resources/Role.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

そして、私のHibernateマッピングファイル:

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
           "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated 07-abr-2011 13:29:19 by Hibernate Tools 3.4.0.CR1 --> 
<hibernate-mapping> 
<class name="com.cartif.database.Attribute" table="Attribute"> 
    <id name="iAttrId" column="attributeid" type="java.lang.Integer"> 
    <generator class="native"> 
    <param name="sequence">s_attribute</param> 
    </generator> 
</id> 
<property column="name" generated="never" lazy="false" name="name" type="java.lang.String"/> 
<property column="value" generated="never" lazy="false" name="value" type="java.lang.String"/> 
<property column="timestamp" generated="never" lazy="false" name="date" type="java.sql.Timestamp"/> 
<property column="deviceId" generated="never" lazy="false" name="iDeviceId" type="java.lang.Integer"/> 
<property column="sensorId" generated="never" lazy="false" name="iSensorId" type="java.lang.Integer"/> 
</class> 
</hibernate-mapping> 

属性iAttrIdが存在し、メソッドの取得/設定が行われており、表の属性attributeidも存在します。

HibernateはSQLのquerysを示しており、それらは:

Hibernate: select nextval ('s_attribute') 
Hibernate: insert into Attribute (name, value, timestamp, deviceId, sensorId, attributeid) values (?, ?, ?, ?, ?, ?) 

原因は何ですか?

ありがとうございます!

答えて

1

私は以前のシーケンスを削除して新しいシーケンスを生成しましたが、正常に動作します!

1

PostgreSQLでシーケンスを作成しましたか?そういう意味でオラクルに似ています。テーブルだけでは十分ではありません。シーケンスも作成する必要があります。

+0

はい、名前がシーケンスです:s_attribute –

関連する問題