- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有如下代码,但最后一个断言失败:
@Transactional
void foo()
{
Assert.assertNotNull(em.find(TrivialEntity.class, 1));
Assert.assertEquals(em.createQuery("DELETE TrivialEntity WHERE id=1").executeUpdate(), 1);
Assert.assertNull(em.find(TrivialEntity.class, 1)); // fails
}
但是,运行此代码并检查数据库后,我看到该实体已被删除。我猜测第二个“find”语句只是返回先前从第一个“find”返回的结果。
我还在上面的第一条和第二条语句之后使用“em.flush”尝试了上面的代码,结果没有任何变化。像下面这样的代码确实有效,但我不想使用“删除”:
@Transactional
void foo()
{
Assert.assertNotNull(em.find(TrivialEntity.class, 1));
em.remove(em.find(TrivialEntity.class, 1));
Assert.assertNull(em.find(TrivialEntity.class, 1)); // now it passes
}
最佳答案
EntityManager 的工作方式是仅处理托管实体。
在第一种情况下,您通过createQuery 执行删除查询来删除TrivialEntity 对象,没有TrivialEntity 对象与entityManager 关联。
后面起作用的原因是,你使用find来检索Trivial Entity Object,间接关联到entityManager,这次remove起作用了。
了解更多信息remove
In order to delete an object from the db it has to first be retrieved (no matter which way) and then in an active transaction, it can be deleted using the remove method.
An IllegalArgumentException is thrown by remove if the argument is not a an instance of an entity class or if it is a detached entity.
关于java - EntityManager.find 返回先前删除的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58860058/
我的应用将 SceneKit 内容的“页面”与图像和文本交替。当我从图像页面前进到新的 SceneKit 页面时,前一个 SceneKit 页面中的内容会短暂显示,然后被新内容替换。时髦。 我只使用一
我正在尝试处理(在 C# 中)包含一些数字数据的大型数据文件。给定一个整数数组,如何对其进行拆分/分组,以便如果下一个 n(两个或更多)是负数,则前一个 n 元素被分组。例如,在下面的数组中,应该使用
刚接触promises,研究过。所以我的代码和我的理解: sql.connect(config).then(function(connection) { return connection.req
目前我在 if (roobaf) block 中有一些代码,这取决于 foo 和 bar 是否为假。我可以在 block 内再次检查这些条件,但感觉像是不必要的代码重复。 if (foo) {
我是一名优秀的程序员,十分优秀!