Я использую JPA toplink-essential и SQL Server 2008
Моя цель - получить значение первичного ключа с автоинкрементом данных, которые будут вставлены в таблицу. Я знаю, что в JDBC есть метод, похожий на getInsertedId (), который дает идентификатор первичного идентификатора с автоматическим приращением (но это после выполнения оператора вставки)
В JPA я обнаружил, что @GenratedValue annotation
может добиться цели.
@Entity
@Table(name = "tableOne")
public class TableOne implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "tableId")
private Integer tableId;
Теперь, если я запускаю приведенный ниже код, он должен дать мне автоматически увеличенный идентификатор , но он возвращает NULL ...
EntityManager em = EmProvider.getInstance().getEntityManagerFactory().createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
TableOne parent = new TableOne();
em.persist(parent); //here I assume that id is pre-generated for me.
System.out.println(parent.getTableId()); //this returns NULL :(