EntityManager.persist() 関数は既存のレコードを更新しようとしていますが、常に新しいレコードを挿入する必要があります。これを達成する方法は?
エンティティ Bean の一部:
@Entity
@Table(name="SYNC_TRIGGER", schema="ETL")
public class SyncTrigger implements Serializable {
@Id
@Column(name="ID")
@SequenceGenerator(name = "TRIGGER_SEQ", sequenceName = "ETL.TRIGGER_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TRIGGER_SEQ")
private Long triggerId;
......
レコードを永続化する Stateless Bean の一部:
@Stateless
public class TriggerPersister {
@PersistenceContext(unitName="syncTriggerDS")
protected EntityManager entityManager;
public <T extends GenericTrigger> void persistTrigger(SyncTrigger
st, T concreteTrigger){
entityManager.persist(st);
.........
UPD: entityManager.persist(st) が実行される前は st.triggerId 値は null ですが、実行後 - 以前に追加されたレコードの ID がこのフィールドに割り当てられます。