- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有需要的业务逻辑
1) 执行一些操作,例如计数或“查找字段大于 a 的前 1 个项目的 id”,即对实体 A 执行一些读取操作。计数或查找涉及超过 25 个项目,因此它会生成许多实体组被影响。2)然后对另一个实体B执行一些操作并持久化更改的实体3) 现在我更改了实体 A 的唯一对象并希望保留它
如果我不在我的方法上使用 Spring @Transactional,则在调用 3) 时,我会得到 id 为“A@someHash”的对象,该对象由不同的对象管理器管理。根据 System.out.println(NucleusJPAHelper.getObjectState(busRouteToCheck));对象处于持久状态
如果我使用 Spring @Transactional 覆盖整个方法,我会得到“在单个事务中打开了太多实体组”
我如何强制 1) 的结果不由对象管理器管理,以最终获得一些 Long 值并进行处理 3) 就像我第一次在我的方法中处理 A 一样。最后,我需要读取多个实体组的项目,并且在事务中只更新两个。
我试图解决的问题:1)将整个方法分成另外3个,其中2个没有@Transaction,1和3有@Transaction;在这里我仍然得到 NucleusUserException; 2)在相同的条件下,我尝试使用2个不同的事务管理器,首先调用只读调用(方法1),然后使用第二个调用(方法3)进行写入。
有没有明确的方法来管理对象管理器?
使用的依赖项是:
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-api-jdo</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-api-jpa</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>com.google.appengine.orm</groupId>
<artifactId>datanucleus-appengine</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>3.1.1</version>
</dependency>
增强器插件是
<plugin>
<groupId>org.datanucleus</groupId>
<artifactId>maven-datanucleus-plugin</artifactId>
<version>3.1.3</version>
<configuration>
<!-- Make sure this path contains your persistent classes! -->
<!--<mappingIncludes>**/domain/*.class</mappingIncludes>-->
<!--<persistenceUnitName>transactions-optional</persistenceUnitName>-->
<verbose>true</verbose>
<api>JPA</api>
<!--<mappingIncludes>com/appspot/Player.class</mappingIncludes>-->
<!--<metadataIncludes>com/appspot/Player.class</metadataIncludes>-->
<fork>false</fork>
</configuration>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
<dependencies>
<!--<dependency>
<groupId>asm</groupId>
<artifactId>asm-commons</artifactId>
<version>3.3.1</version>
</dependency>-->
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-api-jpa</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-enhancer</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
</plugin>
最佳答案
我不能说我对 google JPA 实现深处发生的事情有了详细的了解,并获得了我发布的异常。相反,我解决了我面临的全局问题。我相信如果处理异常,您也会面临同样的问题。我尝试解决更改事务中一些少量对象以及读取可能不需要事务的对象的限制(因为并非事务更新由于上述异常而失败)。
问题在架构上得到了解决:1)您应该在服务层中创建单独的方法来读取实体或获取计数,而不是使其成为事务性的2)在服务层中创建单独的方法以获取非事务性方法的结果作为参数并更新实体;使这些方法具有事务性 3) 在 Controller 层或 Controller 下方但服务上方的自定义层中分别调用这些方法!
我的错误是,我认为 Spring 的 @Transactional 注释是有意义的,即使从另一个没有 @Transactionl 的方法调用带有 @Transactional 的方法。这是错误的:由于注释的方面性质,只有从外部类对象调用方法时它们才有意义。因此,在我的示例中,我得到的整个调用位于唯一事务内(有太多实体异常(exception))或没有事务内(因此获取具有 id 的对象...由不同的对象管理器管理)。因此,将非事务行为和事务行为分离到不同的方法并从外部调用它们对我很有帮助。
关于java - 如何通过获取一些不受对象管理器管理的值来避免 NucleusUserException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47254374/
我每天运行命令将新记录插入 BigQuery 表,并想记录每天插入的记录数。 我创建了一个 QueryJob包含 SELECT 查询和 destination 表的对象。我将 write_dispos
当您登录受密码保护的页面时,WordPress 会设置一个类似于 wp-postpass_hash 的 cookie。 这个 cookie 似乎永远存在。我希望能够为用户提供“注销”链接。如果我不知道
我正在用 C++ 设计一个公共(public) API,我相信我想保留 C++ 属性函数样式约定,它们看起来像 int& Value() 和 const int& Value() const 而不是按
我正在构建一个使用 jQuery 图片库的网站。你可以看一个例子 here . 出于某种原因,当画廊更改图像时,或者当您手动更改图像时,页面高度似乎因为需要更好的词而“闪烁”。新图像似乎增加了页面高度
我正在尝试使用 CSS3 实现一个简单的 3D 照片库。它在 IE10+ 浏览器上运行良好,但在最新版本的 chrome 上有一个小错误,即单击时按钮消失。谁能告诉我如何解决这个问题?提前谢谢你。 w
我想知道为什么其中一些程序会抛出段错误,而另一些则不会。 这个程序抛出一个段错误: #include int main(){ int ar[2096263]; printf("asd
今天我移植了我的旧内存基准测试 从 Borland C++ builder 5.0 到 BDS2006 Turbo C++,发现奇怪的事情。 BCB5 的 exe 运行正常且稳定 来自 BDS2006
下面是我的代码,用于解决 PE 问题 7(“找到第 10001 个素数”): #include using namespace std; bool isPrime(int n, int primes
我有两个 float 元素,右边和左边。 它们的父元素都是 text-align: center, margin: auto: 1. text 999 ' style='curso
我正在为我的 UI 元素制作一个简单的动画。 我有一个动画组件,它有 2 个不同的动画 - ZoomIn 和 ZoomOut。 每当需要在屏幕上显示 UI 元素(例如按钮)时,就会显示这些动画。 我通
我正在使用 .net 3.5 和 vb.net。我对下面提到的每种加密的内部工作知之甚少。我只使用 .net 类库中提供的类。 我有一段信息已经用 TripleDes 加密,然后是 Rijndael,
我有一个关于正确设计 php 文件及其在服务器上的存储的一般性问题。 问题是这样的:我将一个 php 对象的函数拆分到不同的 php 文件中,例如: 文件 1 AndroidFlashCard.php
我在地址表单输入上有自动完成功能。当用户点击建议时,州和邮政编码信息会自动填充。cp_state 是带有状态名称下拉列表的选择框,而cp_zipcode 是邮政编码的输入文本。 我使用下面的 java
我试图按顺序选择记录,但随机限制。 SELECT * FROM tm_winners WHERE paid_out=0 ORDER BY DESC LIMIT RAND(4,8) 但是,我似乎无法随机
我有一张这样的表,我想选取 20 位 HitTest 门的歌手并按字母顺序对他们(这 20 位歌手)进行排序。 id name hit --------------
我正在尝试使用受风影响的雨粒子,也就是 physicsWorld 重力。 我可以看到重力确实对我的 SKSpriteNode 有影响,但我无法对 SKEmitterNode 产生相同的影响。 我只是想
我有一个问题,我在网站加载时调用淡入,但由于 css 过渡效果,元素变为完全不透明,立即淡出然后淡入,我试图找到解决这个问题的方法,因为它看起来很糟糕 jQuery $(window).on("loa
我定义了一个容器元素,包含一个float div和一个ul,并且 ul 元素包含一些 float li 元素。我想清除 ul 的 float ,但 ul 的高度受其 float 兄弟元素的影响。这是
我想使用一项服务。我 100% 确信该服务可以正常工作。 服务电话 public void add(User user) { ConnectionRequest con = new Connectio
如果您在桌面/PC 上访问某人的 instagram 页面,单击搜索栏时,它会向左浮动,然后可以输入文本进行搜索。当搜索字段中没有文本时,搜索图标和“搜索”占位符会回到原来的中心位置。 我假设 jav
我是一名优秀的程序员,十分优秀!