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();
这执行保存但不是更新?我在这里错过了很明显的东西。
您可以发布您的数据库架构供我们查看吗? –