Почему JPA persist () не генерирует автоинкрементный первичный ID?

Я использую JPA toplink-essential и SQL Server 2008

Моя цель - получить первичный ключ с автоинкрементом значение данных, которые будут вставлены в таблицу. Я знаю, что в JDBC есть метод, подобный getInsertedId (), который дает вам идентификатор первичного идентификатора с автоинкрементом (но это происходит после выполнения оператора вставки)

В JPA я обнаружил аннотацию @GenratedValue может помочь.

@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 :(
7
задан masato-san 2 February 2011 в 04:46
поделиться