0

最初のエンティティ (customer1) にデータを作成すると、データは正常に作成されましたが、2 番目のエンティティにデータを作成しようとすると、次のエラーが発生します。この2つのエンティティを2つの異なるパッケージで異なるテーブル注釈名で生成しているため、なぜこのエラーが発生するのかわかりません。また、エンティティごとに異なる永続ユニット名を作成します...このエラーの理由は何ですか?

エラーはコミットにあります

entityManager.getTransaction().commit();
        entityManager.close();

例外 [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException 内部例外: java.sql.SQLIntegrityConstraintViolationException: 重複キーが発生する可能性があるため、ステートメントは中止されました'customer02' で定義された 'SQL130407132754180' で識別される一意または主キー制約または一意のインデックスの値。エラー コード: 20000 呼び出し: INSERT INTO customer02(CUSTOMER, NOTE, BUYERID) VALUES (?, ?, ?) bind => [3 つのパラメーター バインド] クエリ: InsertObjectQuery(prod2.customer02@7fe4bdcc)

パッケージ内のエンティティ 1 顧客 ... customer01

package prod1;

import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="customer01")
public class Customer
{

  @Id
  @Column(name="customer_number")
  private String customer;
  private String Note;
  private String BuyerId;

エンティティ 2 パッケージ内の顧客 ... customer02

package prod2;

import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="customer02")
public class Customer
{

  @Id
  @Column(name="customer_number")
  private String customer;
  private String Note;
  private String BuyerId;

永続化ユニットは

-<persistence-unit name="prod1">
<class>prod1.customer01</class>-
<properties><property name="eclipselink.ddl-generation" 
value="drop-and-create-tables"/>
<property name="eclipselink.logging.level" value="SEVERE"/>
</properties></persistence-unit>-

-<persistence-unit name="prod2">
<class>prod2.customer02</class>-
<properties><property name="eclipselink.ddl-generation" 
value="drop-and-create-tables"/>
<property name="eclipselink.logging.level" value="SEVERE"/>
</properties></persistence-unit>-
4

1 に答える 1

0

表示されている注釈には、ID のシーケンスが定義されていません。@GeneratedValue を追加して、プロバイダーに割り当ててもらいます。

http://wiki.eclipse.org/EclipseLink/Examples/JPA/PrimaryKey

于 2013-04-07T13:25:37.533 に答える