2
我有一個java項目,其中包含執行簡單更新的單元測試集合,使用JPA2進行刪除。單元測試運行沒有問題,我可以驗證數據庫中的更改 - 都很好。我試圖在處理程序中複製/粘貼這個相同的函數(Smartfox Extension) - 我收到一個回滾異常。JPA RollbackException但未進行單元測試
列'levelid'不能爲空。
尋找建議,爲什麼這可能是。我可以從這個擴展(GetModelHandler)中執行數據讀取,但試圖設置數據不起作用。這完全是莫名其妙的。
因此,在總結 -
這工作...
@Test
public void Save()
{
LevelDAO dao = new LevelDAO();
List levels = dao.findAll();
int i = levels.size();
Level l = new Level();
l.setName("test");
Layer y = new Layer();
y.setLayername("layer2");
EntityManagerHelper.beginTransaction();
dao.save(l);
EntityManagerHelper.commit();
}
這種失敗,回滾例外
public class SetModelHandler extends BaseClientRequestHandler
{
@Override
public void handleClientRequest(User sender, ISFSObject params)
{
LevelDAO dao = new LevelDAO();
List levels = dao.findAll();
int i = levels.size();
Level l = new Level();
l.setName("test");
Layer y = new Layer();
y.setLayername("layer2");
EntityManagerHelper.beginTransaction();
dao.save(l);
EntityManagerHelper.commit();
}
}
水平和圖層類有一對多和多對一屬性。
任何想法appeciated。
更新
這裏的架構
Level
--------
levelid (int) PK
name (varchar)
Layer
--------
layerid (int) 11 PK
layername (varchar) 100
levelid (int)
Foreign Key Name:Level.levelid ,
On Delete: no action,
On Update: no action
當我改變
EntityManagerHelper.beginTransaction();
dao.update(l);
EntityManagerHelper.commit();
到
EntityManagerFactory factory = Persistence.createEntityManagerFactory("bwmodel");
EntityManager entityManager = factory.createEntityManager();
entityManager.getTransaction().begin();
dao.update(l);
entityManager.persist(l);
entityManager.getTransaction().commit();
這執行保存但不是更新?我在這裏錯過了很明顯的東西。
您可以發佈您的數據庫架構供我們查看嗎? –