JPA RollbackException 但不在单元测试中

2023-12-01

我有一个 java 项目,其中包含一组单元测试,这些单元测试使用 JPA2 执行简单的更新和删除。单元测试运行没有问题,我可以验证数据库中的更改 - 一切都很好。我尝试在处理程序(Smartfox 扩展)中复制/粘贴相同的函数 - 我收到回滚异常。

列“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();
}

}

Level 和 Layer 类分别具有 OneToMany 和 ManyToOne 属性。

任何想法表示赞赏。

Update

这是架构

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();

to

EntityManagerFactory factory = Persistence.createEntityManagerFactory("bwmodel");
EntityManager entityManager = factory.createEntityManager();
    entityManager.getTransaction().begin();
dao.update(l);
    entityManager.persist(l);
    entityManager.getTransaction().commit();

这执行保存​​但不更新?我在这里遗漏了一些明显的东西。


我看到的最有可能的问题是不同的数据库定义。测试 EJB 通常使用动态生成的内存数据库。而在实际生产中,您使用的是真实的数据库,这可能会强制执行约束。

尝试为 levelid 值分配一个值或更改数据库架构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPA RollbackException 但不在单元测试中 的相关文章

随机推荐

  • Java 字符串字符编码 - 法语 - 荷兰语区域设置

    我有下面的代码 public static void main String args throws UnsupportedEncodingException System out println Charset defaultCharse
  • 为什么虚拟类的析构函数不自动添加到vtable中?

    当虚拟类 B 派生自虚拟基类 A 时 除非在 A 和 B 中显式声明虚拟析构函数 否则 vtable 中 B 的析构函数将指向 A 的析构函数 为什么 为什么 B 的 vtable 析构函数不自动指向 B 的析构函数 而无需定义 A 和 B
  • 根据多个分隔符分割字符串 [/, #, @, '']

    我想根据多个分隔符拆分字符串 如何将一个字符串拆分为多个字符串作为分隔符 例如 我有一个字符串 create channel name description of the channel field1 field2 我想要一个数组 cre
  • Java 摇摆;单击按钮后如何显示文本

    我想要 世界你好 当我的按钮被点击时显示 因此 转到下一个 框架 但在同一个窗口中 我尝试过卡片布局 但是谁能告诉我如何使用这段代码来做到这一点 我在这段代码中做错了什么 import javax swing JButton import
  • 如何在 python 中执行简单的“chmod +x”?

    我想从可执行的 python 脚本中创建一个文件 import os import stat os chmod somefile stat S IEXEC 它出现os chmod不会像 unix 那样 添加 权限chmod做 注释掉最后一行
  • 运行 git commit 时与编辑器相关的错误?

    运行 Git commit 时出现以下错误 c Program Files x86 Notepad notepad exe c line 0 syntax error near unexpected token c Program File
  • XSLFGroupShape 不包含其子形状

    我正在使用 Apache POI 3 16 撰写本文时的最新版本 在下面的代码片段中 我创建了一个 XSLFGroupShape 然后用它来创建一堆子形状 XSLFGroupShape group slide createGroup XSL
  • int64 是否限制 numpy 和 pandas 中的最大值?

    当 numpy 数组或 pandas 系列的类型为 int64 时 这是否会将单元格可以存储的最大值限制为某个值 例如 在python3中 int没有限制 numpy 或 pandas 中的 int64 有限制吗 Yes int64表示它使
  • 在 Firebase 中通过电子邮件查找 UID

    我首先尝试实例化数据库中的每个用户 如下所示 emails email email protected uid x 我很快发现我无法存储电子邮件 因为它有一个 and 我最初打算像这样进行用户查找 func userLookUpByEmai
  • Magento 1.7 按多个类别过滤产品

    我正在寻找一种方法来按当前类别和可选子类别过滤类别页面上返回的产品 到目前为止 我见过的每个解决方案都是 显示属于 a 类或 b 类的产品 我需要编辑哪个文件才能通过作为查询参数传递的附加可选类别 ID 例如 catfilter 32 看这
  • 停止 NSTimer 并关闭视图控制器(快速)

    我在用NSTimer在我的中查找更新firebase数据库 我已将代码放入我的viewDidLoad NSTimer scheduledTimerWithTimeInterval 5 0 target self selector selec
  • Leakcanary 使用 Otto 报告内存泄漏

    跟进我的最后一个问题 这是我无法摆脱的第二个内存泄漏 我读到我需要根据 Activity 和 Fragment 生命周期注册和注销我的静态 Otto 总线 因此我添加了对 onStop 和 onStart 的注册和注销调用 有一个按钮可以触
  • 如何对多列进行计数(不同)

    这不起作用 select count distinct colA colB from mytable 我知道我可以通过双重选择来简单地解决这个问题 select count from select distinct colA colB fr
  • ASP.NET:WCF 和无法加载文件或程序集“App_Web_hamznvwf”

    我最近开始使用支持 AJAX 的 WCF 并且一直受到这个 NET 缓存问题的困扰 无法加载文件或程序集 App Web hamznvwf 我的服务器每天会遇到 4 到 5 次这样的问题 Win 2003 看第一篇文章 因此 我将文件从服务
  • 远程服务器命令执行

    在远程服务器上执行 shell 命令并在不实际登录的情况下获取输出的最佳方法是什么 也许用 ssh 密钥 最好用python 你的意思是不登录manually 因为实际上允许您在根本不登录的情况下执行命令的服务器将带来巨大的安全风险 看起来
  • 使用 XML 数据类型读取存储在 SQL Server 2008 R2 中的 XML 文档

    我正在使用 SQL Server 2008 R2 和 ASP NET 3 5 我在 SQL 端以 XML 形式存储数据表 NET 列的数据类型为 XML 这是将 XML 存储在 SQL Server 的表列中的示例
  • 在 vb.net 中显示加载屏幕

    当长时间的进程正在运行时 我需要显示一个屏幕或其他内容 说 正在加载 或其他内容 我正在使用 Windows Media Encoder SDK 创建一个应用程序 需要一段时间来初始化编码器 我希望在启动编码器时弹出一个屏幕 显示 正在加载
  • AttachNotSupportedException:没有提供者安装 java 代理

    我在将 Java 应用程序附加到远程 Java 虚拟机时遇到问题 我在 Windows 7 上使用 java 8u45 并且我的附加代码非常简单 import java io IOException import java util Lis
  • 在 C++ 中将数组传递给函数

    include
  • JPA RollbackException 但不在单元测试中

    我有一个 java 项目 其中包含一组单元测试 这些单元测试使用 JPA2 执行简单的更新和删除 单元测试运行没有问题 我可以验证数据库中的更改 一切都很好 我尝试在处理程序 Smartfox 扩展 中复制 粘贴相同的函数 我收到回滚异常