我正在使用JPA toplink-essential和SQL Server 2008
我的目标是获取要插入表中的数据的自动增量主键值。我知道在 JDBC 中,有类似 getInsertedId() 的方法可以为您提供自动增量主 ID 的 ID(但那是在执行插入语句之后)
在 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;
现在,如果我运行下面的代码,它应该给我自动递增的 id ,但它返回 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 :(