我正在使用MySQL/JPA,並且持久化實體上的自動生成的ID即使在提交後也不可用。下面是它發生在哪裏代碼:JPA @GeneratedValue is allways
synchronized (em.getTransaction()) {
while (em.getTransaction().isActive()) {
em.getTransaction().wait();
}
em.getTransaction().begin();
try {
em.merge(transmissor);
em.merge(poco);
em.flush();
//em.refresh(poco);
System.out.println("ID: " + poco.getIdEstacao());
} catch (Exception ex) {
System.out.println(ex.toString());
ex.printStackTrace();
}
// Some other unrelated code...
em.getTransaction.commit();
em.getTransaction.notify();
System.out.println("ID: " + poco.getIdEstacao());
}
後都和em.flush()
後em.getTransaction.commit()
,poco.getIdEstacao
返回null
。如果我嘗試em.refresh(poco)
它拋出一個異常:
java.lang.IllegalArgumentException: Can not refresh not managed object:unesp.lebac.aquitel.dataLink.enitity.Poco[ idEstacao=null ].
任何想法,爲什麼出現這種情況?提前致謝!
你可以顯示你的實體嗎? –
PS:我認爲這是因爲你正在使用'merge()' - >嘗試'persist()' –