次のコードを使用していますが、テーブルからエントリを読み取ると(derby db --eclipse link)、エントリは1つだけですが、新しいエントリを追加するにはどうすればよいですか?たとえば、同じエントリを5回追加するには?
for (Object object : listClsObj) {
int cnt = 1;
do {
em.getTransaction().begin();
em.persist(object);
em.getTransaction().commit();
cnt++;
}
while (cnt < 6);
}
em.close();
エンティティクラスは次のとおりです。
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private String id;
private String firstName;
private String lastName;
public String getId() {
return id;
}
public void setId(String Id) {
this.id = Id;
}
public String getFirstName() {
return firstName;
}
em persistにブレークポイントを設定し、2番目のループでid値を変更すると、次のエラーが発生しました。
例外の説明:クラス[DerbyModel.Person]の属性[id]は、データベースの主キー列にマップされています。更新は許可されていません。スレッド"main"の例外javax.persistence.RollbackException:例外[EclipseLink-7251](Eclipse Persistence Services-2.4.1.v20121003-ad44345):org.eclipse.persistence.exceptions.ValidationException例外の説明:の属性[id]クラス[DerbyModel.Person]は、データベースの主キー列にマップされます。更新は許可されていません。