GAE、JPA、XG 事务、实体组过多异常

2024-05-05

我知道 GAE 上的 XG 交易有 5 个实体组的限制,但我认为我在一项交易中仅使用 3 个组(商品、类别、商品类别),但仍然遇到此异常: 引起原因:java.lang.IllegalArgumentException:在单个事务中对太多实体组进行操作。

以下是我的数据模型和 dao 代码的重要部分:

品类型号

@Entity(name = "Category")  
public class Category extends BaseDatastoreEntity{

private String name;    
private Key parentKey;    
private String parentName;

@Unowned
@OneToMany(cascade= CascadeType.ALL)
private Set<CommodityCategory> commodityCategories = new HashSet<CommodityCategory>();
.
.
public void addCommodityCategoryInternal(CommodityCategory commodityCategory) {       
  this.commodityCategories.add(commodityCategory);
}

商品型号

@Entity(name = "Commodity")
public class Commodity extends BaseDatastoreEntity implements IRateable{

private String name;    
private BigDecimal price; 
.
.    
@OneToMany(mappedBy = "commodity", cascade= CascadeType.ALL, fetch= FetchType.EAGER)
private Set<Picture> pictures = new HashSet<Picture>();
@Unowned        
@OneToMany(cascade= CascadeType.ALL)
private Set<CommodityCategory> commodityCategories = new HashSet<CommodityCategory>();
.
.
public void addCommodityCategoryInternal(CommodityCategory commodityCategory) {       
  this.commodityCategories.add(commodityCategory);
}

商品品类模型

@Entity(name="CommodityCategory")
public class CommodityCategory extends BaseDatastoreEntity{

private boolean isDefaultCategory;
@Unowned 
@ManyToOne(cascade= CascadeType.ALL)
private Key commodity;
@Unowned 
@ManyToOne(cascade= CascadeType.ALL)
private Key category;


@SuppressWarnings("LeakingThisInConstructor")
public CommodityCategory(boolean isDefaultCategory, Commodity commodity, Category category) {  
    super(true);
    this.isDefaultCategory = isDefaultCategory;
    this.commodity = commodity.getId();
    this.category = category.getId();        
    category.addCommodityCategoryInternal(this);
    commodity.addCommodityCategoryInternal(this);
}

CommodityCategory DAO 实现

@Repository("commodityCategoryDAOImpl")
public class CommodityCategoryDAOImpl extends AbstractDAO<CommodityCategory, Key> implements CommodityCategoryDAO{

@Override
public CommodityCategory create(boolean isDefaultCategory, Commodity comm, Category cat) {
    EntityManager em = EMF.get().createEntityManager();       
    setEntityManager(em);           
    getEntityManager().clear();
    getEntityManager().getTransaction().begin();  
    Commodity commodity = getEntityManager().find(Commodity.class, comm.getId());        
    Category category = getEntityManager().find(Category.class, cat.getId());
    CommodityCategory commodityCategory = new CommodityCategory(isDefaultCategory, commodity, category);         
    getEntityManager().persist(commodityCategory);
    getEntityManager().getTransaction().commit();//here is the exception
    getEntityManager().clear();
    return commodityCategory;
}

有什么想法为什么这不起作用?

感谢您的任何答复!

Pobo


我也有类似的问题。我尝试获得超过 5 个相同的实体!从 GAE 数据存储中键入并获得太多实体组异常。所以我认为它并不取决于不同的类型,而是取决于持久性实体的数量。因为同一类型的每个对象都有不同的实体组。当尝试获取所有对象的交易时,您会遇到问题。

因此,为了获取实体列表,我不再使用事务,它可以工作

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

GAE、JPA、XG 事务、实体组过多异常 的相关文章

随机推荐

  • Android 2.3 或更低版本上通知中的可点击自定义视图

    我创建了一个自定义通知布局 其中有一个可单击的按钮 到目前为止 在 Android 3 API 级别 11 或更高版本上可以正常工作 但在 Android 2 3 即ContentIntent来自Notification总是覆盖我的布局并且
  • 我可以将模型关联到 laravel 中的通知表吗?

    我一直在处理通知 并且很快就完成了它 除非我觉得需要删除通知并将其与帖子相关联 有什么方法可以将模型与帖子关联起来吗 notifications桌子 我想用 table创建通知模型后在模型中找到的属性 编辑 或者我可以在删除帖子时删除通知吗
  • TextView ClickableSpan 按下状态的样式[重复]

    这个问题在这里已经有答案了 我对 ClickableSpan 进行子类化 以自定义 TextView 中链接的文本样式 private static class LinkSpan extends ClickableSpan Override
  • .NET 配置(app.config/web.config/settings.settings)

    我有一个 NET 应用程序 它具有用于调试和发布版本的不同配置文件 例如 调试 app config 文件指向开发SQL服务器 http en wikipedia org wiki Microsoft SQL Server它启用了调试并且发
  • 使用PHP检测IE浏览器版本

    我正在使用 SERVER HTTP USER AGENT 来检测用户的浏览器 当我在 IE8 上的本地主机上运行 var dump 时 它返回 兼容的 微星8 0 但是当我将其上传到我的主机 godaddy 时 我得到 兼容的 MSIE 7
  • 当建立 TLS / LDAP 或 TLS / HTTP 连接时,线路上会发生什么?

    我正在重新表述我的问题 希望能得到更好的答复 我问了类似的问题这里服务器故障 https serverfault com questions 178561 what are the exact protocol level differen
  • 在 JavaScript 中将整数数组转换为字符串数组

    我有一个如下所示的数组 var sphValues 1 2 3 4 5 然后我需要转换上面的数组 如下所示 var sphValues 1 2 3 4 5 我怎样才能转换 我用它来自动完成 您可以使用map https developer
  • 引用计数指针的STL类?

    这应该是微不足道的 但我似乎找不到它 除非不存在这样的类 智能指针的 STL 类 或类集 是什么 UPDATE 感谢您的回复 我必须说我很惊讶没有标准实施 我最终使用了这个 http archive gamedev net referenc
  • 在 Spring Boot 中为自定义控制器方法启用 HAL 序列化

    我正在尝试使用 spring boot starter data rest 通过 Spring Boot 构建 RESTful API 有一些实体 账户 交易 类别和用户 只是常见的东西 当我检索对象时http localhost 8080
  • 如何解析代码(Python)?

    我需要解析一些特殊的数据结构 它们采用某种类似 C 的格式 大致如下所示 Group GroupName C Style comment Group AnotherGroupName Entry some variables 0 3 141
  • 是否可以列出派生 Generic 的记录数据类型中字段的名称和类型?

    我知道对于派生 Data Data 的数据类型 constrFields http hackage haskell org package base 4 7 0 2 docs Data Data html v constrFields给出字
  • Android - 使用 HttpURLConnection 来 POST XML 数据

    我遇到了一些死胡同 需要一些帮助 请 我对 Android 开发 以及一般编码 非常陌生 基本上我需要使用 HttpURLConnection 将 XML 数据发布到 URL 但无法让它工作 我的应用程序从 GET 请求读取并传递 XML
  • 用于 JAWS 开发的文本控制台?

    我正在开发一个网络应用程序 我希望通过屏幕阅读器使其易于使用 在 JAWS 中测试东西非常耗时 是否可以让 JAWS 显示文本而不是阅读它 我实际上不想听到开发过程中的内容 我只是想看看 JAWS 会读什么 据我所知 大白鲨 没有语音查看器
  • 使用两个图像的平方差作为张量流中的损失函数

    我正在尝试使用两个图像之间的 SSD 作为我的网络的损失函数 h fc2 is my output layer y is my label image ssd tf reduce sum tf square y h fc2 train st
  • 让 GHC 生成“带进位加法 (ADC)”指令

    下面的代码将表示 192 位数字的两个未装箱字三元组添加到新的未装箱字三元组中 并且还返回任何溢出 LANGUAGE MagicHash LANGUAGE UnboxedTuples import GHC Prim plusWord2 Wo
  • Spark Worker 在 Heartbeater 中与 Spark Driver 通信的超时时间为 3600 秒

    我没有配置任何超时值 而是使用默认设置 在哪里配置3600秒超时 怎么解决呢 错误信息 18 01 10 13 51 44 WARN Executor Issue communicating with driver in heartbeat
  • 添加一个favicon到redmine主题

    redmine 使用位于的 favicon usr share redmine public favicon ico 我发现很多代码片段使用cd usr share redmine grep HR favicon app app helpe
  • 单击时获取按钮值并回显它

    我是 php 的初学者 我的第一个任务是构建一个计算器 我在这里询问如何从按钮获取值并在同一页面上回显它 我正在尝试使用 isset 通过方法发布 但能够在同一页面上显示任何值
  • 在 C 中初始化结构体的静态数组

    我正在用 C 实现一个纸牌游戏 纸牌有很多种类型 每种纸牌都有大量信息 包括一些需要单独编写与其关联的脚本的操作 给定这样的结构 并且我不确定我的语法是否适合函数指针 struct CARD int value int cost This
  • GAE、JPA、XG 事务、实体组过多异常

    我知道 GAE 上的 XG 交易有 5 个实体组的限制 但我认为我在一项交易中仅使用 3 个组 商品 类别 商品类别 但仍然遇到此异常 引起原因 java lang IllegalArgumentException 在单个事务中对太多实体组