使用 ManyToMany 的 TomEE + OpenJPA 不起作用

2023-12-20

我认输了。我不明白,这能有多难?

我有两个实体User and Group,具有多对多关系。Group管理关系。所以在Group I have:

@Entity 
@Table(name = "GROUPS", catalog = "", schema = "GROUPADMIN")
public class Group {
  ...
  @ManyToMany
  @JoinTable(
    name = "GROUP_USERS",
    joinColumns = {@JoinColumn(name = "GROUP_ID")},
    inverseJoinColumns = {@JoinColumn(name = "USER_ID")}
  )
  private Set<User> users;

那么对于User我创建实体如下:

@Entity 
@Table(name = "USERS", catalog = "", schema = "GROUPADMIN")
public class User {
  ...
  @ManyToMany(mappedBy="users")
  private Set<Group> groups;

然后在我的支持豆中,实际上是@Named("registry"),我存储对检索到的引用user作为同名的属性。

然后我在我的 JSF 中使用那个支持 bean

Hello <h:outputLabel value="#{registry.user.firstName}"/>
<h:panelGroup>
  <h:dataTable value="#{registry.user.groups}" var="g">
    <f:facet name="header">Properties List</f:facet>
    <h:column>
      <f:facet name="header">Group</f:facet>
      <h:outputText value="#{g.id}"/>
    </h:column>
  </h:dataTable>
</h:panelGroup>

对于那些对表格感兴趣的人:

create table "GROUPADMIN".GROUPS
(
  ID VARCHAR(15) not null primary key
);
create table "GROUPADMIN".USERS
(
  ID VARCHAR(50) not null primary key,
  PASSWORD VARCHAR(50),
  FIRST_NAME VARCHAR(50),
  LAST_NAME VARCHAR(50)
);
create table "GROUPADMIN".GROUP_USERS
(
  GROUP_ID VARCHAR(15) not null,
  USER_ID VARCHAR(50) not null,
  primary key (GROUP_ID, USER_ID)
);

首先注意到的是,组似乎是空的,不是空的,而是空的(通过调试等进行验证)。所以我明白默认情况下@ManyToMany会使用惰性绑定,所以我将其更改为fetch = FetchType.EAGER(但这并不重要)。这样做之后,事情真的变得很奇怪......

此时 EL 开始抱怨 id 属性不存在"#{g.id}":

Caused by:
javax.el.PropertyNotFoundException - Property 'id' not found on type org.apache.openjpa.util.java$util$HashSet$proxy
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:266)

为什么它试图取回财产id on a HashSet代理,而不是在Group?

所以我很好奇我到底参与了什么g我从获得的属性<h:dataTable>,我尝试简单地使用输出它<h:outputText value="#{g}"/>...结果真的很有趣...

What g打印出来的不仅仅是其中的一个元素Set<Group>,但实际上是集合本身,它与之前显示的异常相匹配......这更能表明 API 或集成中的错误?

所以基本上看起来有几件事被破坏了,尽管我怀疑这一切都与同一问题有关。

请注意,我使用了基本的现成 TomEE,最新版本,没有定制(也没有 JPA 的增强器)。


为什么它应该有效:JSR 338:JavaTM 持久性 2.1。 https://jcp.org/en/jsr/detail?id=338

提交的错误:Jira 问题 OpenJPA-2546 https://issues.apache.org/jira/browse/OPENJPA-2546(请投票解决此问题)。

解决方法:更换Set<T> with List<T>作为解决方法。

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

使用 ManyToMany 的 TomEE + OpenJPA 不起作用 的相关文章

  • 从文件中读取文本并将每行中的每个单词存储到单独的变量中

    我有一个包含以下内容的 txt 文件 1 1111 47 2 2222 92 3 3333 81 我想逐行读取并将每个单词存储到不同的变量中 例如 当我读取第一行 1 1111 47 时 我想将第一个单词 1 存储到var 1 1111 进
  • 使用 Firebase Java API 检索/格式化数据的最佳方式

    我在用着Firebase用于数据存储Android项目 并使用Firebase Java API来处理数据 不过 我不确定我是否尽可能高效地完成此操作 并且我希望获得一些有关检索和格式化数据的最佳实践的建议 我的Firebase存储库看起来
  • Appengine - 隐藏文件夹的部署

    为了验证 SSL 证书 我需要将包含一些文件的隐藏文件夹 well known 上传到我的应用程序 我正在使用 eclipse 部署 java 应用程序 但 appengine 上的应用程序未收到这些文件 我猜他们被过滤掉了 我尝试将隐藏文
  • 如何使用 Java2D 创建硬件加速图像?

    我正在尝试创建一个快速图像生成器 它可以执行大量 2d 转换和形状渲染 因此我尝试使用 BufferedImage 然后获取 Graphics2D 对象来执行所有绘图 我现在主要关心的是 make 速度非常快 所以我创建一个像这样的 Buf
  • 对 Java Servlet 进行单元测试

    我想知道对 servlet 进行单元测试的最佳方法是什么 只要内部方法不引用 servlet 上下文 测试内部方法就不是问题 但是测试 doGet doPost 方法以及引用上下文或使用会话参数的内部方法呢 有没有办法简单地使用经典工具 例
  • 无法解析 ListView 适配器中的 getSystemService 方法

    我正在研究约翰霍顿的Android 编程初学者 目前正在尝试创建一个笔记应用程序 霍顿刚刚介绍ListViews 但是 我遇到了麻烦adapter class public class NoteAdapter extends BaseAda
  • 要导入什么才能使用@SuppressFBWarnings?

    要使用 SuppressFBWarnings 需要导入什么 我通过帮助 安装新软件安装了 findbugs 插件 当我输入 import edu 时 我无法按 ctrl space 来获取选项 Example try String t nu
  • ImageIO read() 和 write() 操作后 GIF 图像变得错误

    我有这个代码 它只是读取 GIF 文件 用背景重新绘制它 然后输出到新的 GIF 文件 问题是结果文件变得奇怪 我不知道为什么它的质量变得很差 JPG 文件不会出现此问题 如何修复它 import java awt Color import
  • javax.validation 的 @AssertTrue - 它不应该创建错误消息吗?

    我在 Spring MVC 命令 bean 中有以下代码 AssertTrue public boolean isConditionTrue return false private boolean conditionTrue 我的 JSP
  • 如何在 Jersey RESTful Web 服务中放置 cookie?

    我想通过 Jersey API 将 cookie 从 PUT webservice result 放置到 POST webservice 这是我的代码 WebResource service1 client resource http te
  • Eclipse:对 Java 1.7 的失望(未绑定库)

    我在全新安装的 Eclipse 中处理全新项目时遇到问题 重现步骤 下载此版本的 Eclipse http www eclipse org downloads packages eclipse ide java developers hel
  • 是否可以使用“WHERE”子句来选择SQL语句中的所有记录?

    晚上好 我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录 下面一些解释 随机 SQL 语句 Java JSP示例 正常情况 String SqlStatement SELECT FROM table example
  • Eclipse 错误:“设置构建路径”遇到错误

    我正在使用一个名为 jtwitter 的 API 它有一个 jar 文件 jtwitter jar 我一直在使用它并使用 git 维护它 我把代码托管在github上 有些天 我没有碰过它的代码 今天 当我克隆我的 git repo 时 实
  • 如何使用二叉树中的递归来完成回溯

    我正在尝试插入一个二进制节点 我的代码很复杂 没有希望挽救它 所以我计划重写它 基本上我没有考虑回溯 也没有仔细考虑算法 我正在尝试使用顺序遍历插入二进制节点 但我不明白应该如何回溯 D B E A C F 我如何搜索根 D 的左子树 然后
  • AWS Java SDK 中 DynamoDB v2 的迁移详细信息?

    有没有人对新的命名空间进行了更改 com amazonaws services dynamodbv2 以及 AWS Java SDK 1 4 2 及更高版本 中 DynamoDB 的接口 本地二级指数的发布显然需要根据1 4 2 发行说明
  • 如何指示 yum 安装特定版本的 OpenJDK

    我尝试安装openjdk in the redhat服务器 如何安装指定版本 我要安装的版本是 11 0 4 使用以下命令安装的版本是11 0 6 yum install java 11 openjdk devel 曾与 yum showd
  • 如何为信号量中等待的线程提供优先级?

    我使用信号量来限制访问函数的线程数量 我希望接下来要唤醒的线程应该由我将给出的某个优先级选择 而不是默认信号量唤醒它们的方式 我们怎样才能做到这一点 这是实现 class MyMathUtil2 implements Runnable do
  • 所有语言中特殊字符的 Java 正则表达式

    在我的用户输入字段中 我想允许某些特殊字符 字母和数字的组合 我应该确保正则表达式模式在输入时允许此设置任何语言 基本上我构建的这个正则表达式也应该支持 unicode 表示 如何使用 Java 中的 Pattern 类来实现这一点 这里给
  • 获取给定字符串日期中该月的最后一天

    我的输入字符串日期如下 String date 1 13 2012 我得到的月份如下 SimpleDateFormat dateFormat new SimpleDateFormat MM dd yyyy Date convertedDat
  • jsf文件下载不起作用

    当我点击h commandButton它执行myBean dowanlod 方法 但它不下载任何文件 这是我在支持 bean 中的方法 没有例外 光标变得忙碌 似乎在等待响应 对于这种操作是否有任何额外的配置或者这段代码有什么问题吗

随机推荐

  • FreeBSD 作为一个开发平台有多好?

    我知道很多网络托管提供商都提供 FreeBSD 但是 FreeBSD 作为开发平台有多好呢 具体来说 Java 1 6可以用吗 它是否提供了一些 Linux 下不可用的特定工具 我一直认为 FreeBSD 是一个美妙的安全托管环境 但也许不
  • 为什么 Next.js 自定义服务器禁用自动静态优化?

    我无法理解为什么在文档中 https nextjs org docs advanced features custom server据说拥有自定义服务器会禁用自动静态优化 https nextjs org docs advanced fea
  • 最短路径算法的一种变体

    我们给定一个带权无向图 具有两个源顶点和两个目标顶点 例如 s1 s2 d1 d2 对于从源 1 到目的地 1 以及从源 2 到目的地 2 的成本定义为 如果仅使用两条路径之一 则使用一条边的成本等于权重 如果两条路径 s1 gt gt d
  • 哪里可以获得犀牛共享资源

    我正在使用 nhibernate 开发一个 asp net mvc 项目 目前我认为 Rhino Commons 会话管理是控制会话的最佳方法 但是我应该从哪里获取 Rhino Commons 呢 我在 Horn Github 上找到了它
  • Laravel - 动态创建表(无需迁移)

    我正在尝试根据管理员请求动态创建一个表 虽然它看起来应该像大多数 Laravel 文档一样简单 但我似乎无法create一张桌子 尽管我可以删除表格 并根据需要添加或删除列 这是我的基本代码模型 use Illuminate Databas
  • 测试项目在 TeamCity -> NUnit 阶段不读取 app.config

    我们正面临着一个奇怪的问题 即 JetBrains TeamCity 在我们的主项目上引发的单元测试 其中少数库项目的测试经常失败 显然 它没有读取配置文件 来自 app config 并很好地存储在项目 gt bin gt 调试 gt p
  • 在 Java 8 中从流创建多值映射

    有没有办法优雅地初始化和填充多值Map
  • 是否可以在 CSS3 选择器中使用 CSS 变量?

    我正在尝试使用 CSS 变量进行一些实验 但我无法让它工作或找到任何有关它的文档 有谁知道是否可以在 CSS3 选择器中使用 CSS var 我做了下面的例子来解释我想做的事情 此示例仅适用于 Chrome JSFIDDLE http js
  • SAS 中的退出与运行语句

    在 SAS 中 退出 和 运行 有什么区别 声明 我不知道何时使用 退出 以及何时使用 运行 例如 为什么是proc datasets using quit but proc contents using run 这可以追溯到 SAS 曾经
  • travis CI 中跳过了 SonarQube Scanner 分析

    有谁知道 SonarQube 扫描仪分析可能被跳过的原因是什么 sonar scanner X Dsonar host url https sonarqube com Dsonar login SONAR TOKEN 08 59 10 16
  • XCode 6.0.1 上的 Apple Mach-O 链接器错误

    我已将 XCode 更新到 6 0 1 在此更新之前 我能够在模拟器和我的设备中构建我的项目 但现在 它给了我Apple Mach O 链接器错误 我冲浪了很多 我已删除 DerivedData 文件夹 仍然有问题 我正在构建一个 Phon
  • 我试图让 UILabel 在 UIScrollView 内部滚动,但它不滚动

    这是我的 m 中 void viewDidLoad super viewDidLoad self scrollView addSubview self contentView self scrollView contentSize self
  • 在“数据工厂”模式下启用发布

    我已在 Azure 数据工厂上启用 Git 我也创建了我的 Git 存储库 当我想创建一个新的管道时 我收到以下消息 您已在数据工厂中启用 GIT 数据工厂 模式下的发布已禁用 请切换回 GIT 模式以进行进一步更改 当我想选择 GitHu
  • CSS伪元素::before(2); :之前和:之前

    我正在使用 css 并且尝试在我的 div 中添加一个元素 之前 就像箭头一样 有什么办法可以实现吗 我尝试了伪 before 但有三个 before 2 before 和 before 它们让我很困惑 它们之间有什么区别 The 内容的
  • Ruby 中检查变量是否为字符串

    还有比下面更惯用的吗 foo class String 我想你正在寻找instance of is a and kind of 将为派生类的实例返回 true class X lt String end foo X new foo is a
  • 如何更改密码框的屏幕键盘

    我有一个盒子 我想要输入仅由数字组成的密码 例如 ATM 卡 PIN 码 最好的方法是什么 要求 密码 带有隐藏数字 输入数字作为默认 唯一 键盘 我尝试过的 我认为 InputScopes 是可行的方法 但我无法在密码框中设置输入范围 我
  • 正则表达式选择标签之间的所有文本

    选择 2 个标签之间的所有文本的最佳方法是什么 例如 所有 之间的文本 pre 页面上的标签 您可以使用 pre pre 用您想要的任何文本替换 pre 并提取第一组 对于更具体的指令 请指定一种语言 但这假设您有非常简单且有效的 HTML
  • Git - 如何查找目录中所有项目的所有“未推送”提交?

    我终于习惯了 Git 在最初的陡峭学习曲线之后 我必须说它非常好 我只是怀念单个文件外部 但那是另一个故事了 然而 我有一个无法解决的问题 我目前正在同时处理十几个项目 它们都是相互关联的 我必须从一个跳到另一个 到处做出改变 到目前为止一
  • 带有无效证书的自定义 NuGet feed

    如何使用 nuget 命令禁用 SSL 证书检查 PS C 软件 gt nuget exe 列表 无法加载服务索引 来源https asd ca api feeds https asd ca api feeds 一个错误 发送请求时发生 底
  • 使用 ManyToMany 的 TomEE + OpenJPA 不起作用

    我认输了 我不明白 这能有多难 我有两个实体User and Group 具有多对多关系 Group管理关系 所以在Group I have Entity Table name GROUPS catalog schema GROUPADMI