1

我有一团 Play Framework(1.2.5)/JPA 代码,如下所示:

List<MyObject> nL = MyObject.find("uuid", SubscriptionReferrer).fetch();
MyObject n = nL.get(0);
n.subscriptions.add(SubscriptionReference);
n.save();
JPA.em().flush();
JPA.em().getTransaction().commit();

因为它是在控制器领域之外调用的,所以我要求 JPA 编写记录。无论如何,基本上有人订阅了一个产品,这个方法被调用了。但他们也可以同时订阅多个产品,从而创建对该方法的多个单独调用。

我似乎遇到的问题是,当调用并行运行时,

List<MyObject> nL = MyObject.find("uuid", SubscriptionReferrer).fetch();
MyObject n = nL.get(0);

bit 被调用并返回对象,但该对象对于所有调用都是单独的,并且当提交保存时,最后一个对象获胜,并且所有其他对象都被覆盖。

==编辑== 另外,我不知道会通过多少订阅,因为它来自第 3 方支付提供商。

那么,有没有一种明智的方法可以让我在不编写一些额外的缓存层的情况下保存对对象的所有更新?

谢谢

汤姆

4

2 回答 2

0

糟糕的设计!

睡在上面,然后意识到,尽管它只是一堆字符串,但创建订阅模型并通过连接回主对象来持久化它们要容易得多。

多谢你们。

于 2013-01-29T15:59:06.617 回答
0

您可以“同步”您的方法,这将确保以原子方式获取和更新对象。在 JPA 中使用事务也可以。

于 2013-01-28T16:39:21.530 回答