2

JBOss 5、JPA、Derbyで正常に動作する古いアプリケーションがあります。現在、JBoss 6に移植していますが、システムがエンティティを挿入できず、エラーメッセージが表示されます。

列'ID'はNULL値を受け入れることができません。

ここで、IDはID列です。

@Entity
public class Customer {
    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    int id;
    ...
}

生成されたスキーマを確認しましたが、見栄えがします。

CREATE TABLE "APP"."CUSTOMER" (
    "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), 
    "EMAIL" VARCHAR(255), 
    "NAME" VARCHAR(255),
    "PHONE" VARCHAR(255));

以下のリンクでアプリケーションのコードを見ることができます。どんな助けでも大歓迎です。

https://docs.google.com/open?id=0B_lXBrNTL1s-R3NHb2hYZlJ1Znc

ラージ

4

2 に答える 2

1

さて、私は物事を働かせることができました。基本的に、JPA を使用して Derby でスキーマを生成すると、テーブルは問題なく作成されますが、ID 列を含む行を挿入する際に問題が発生します。解決策は、JPA からスキーマを生成しないことでした。手動でスキーマを作成し、スキーマ生成オプションをコメントアウトしました。

<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="ContactsPU" transaction-type="JTA">
    <jta-data-source>java:DerbyDS</jta-data-source>
    <class>com.webage.contacts.Customer</class>
    <!-- 
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
        <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
    </properties>
     -->
</persistence-unit>
</persistence>
于 2012-04-30T17:04:34.720 に答える