JPA ManyToMany 对于用户和组?

2023-12-14

同样的问题在这里,但这对我没有帮助

DB: users-table, groups and group_has_user

我有三个表和多对多连接。在我的 JSF 应用程序中,我尝试添加用户。在我的组表中,有三个不同的组:管理员、客户和用户。

我做了什么:

  1. 将数据插入 jsf 表单后,用户单击“保存”。
  2. 名为 usersController 的 ManagedBean 从 groupsController 中获取组(客户组)
  3. usersController ManagedBean 创建新用户并将其保存到 mySQL-db。
  4. 问题是 groups_has_user-table 为空

和代码

Users:

public class Users implements Serializable {
@ManyToMany(mappedBy = "usersCollection")
private Collection<Groups> groupsCollection;

Groups:

public class Groups implements Serializable {
    @JoinTable(name = "groups_has_user", joinColumns = {
        @JoinColumn(name = "groups_group_id", referencedColumnName = "group_id", nullable = false)}, inverseJoinColumns = {
        @JoinColumn(name = "user_username", referencedColumnName = "username", nullable = false)})
    @ManyToMany
    private Collection<Users> usersCollection;

用户控制器管理Bean

// current is type Users
current.setIsCustomer(Boolean.TRUE);

//BalusC!! Why this is not working but the one below is?
//FacesContext facesContext = FacesContext.getCurrentInstance();
//HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);
//GroupsController groupsC = (GroupsController)session.getAttribute("groupsController");

FacesContext context = FacesContext.getCurrentInstance();
GroupsController groupsC = (GroupsController) context.getApplication().evaluateExpressionGet(context, "#{groupsController}", GroupsController.class);

// Fetching group number 2, customer
Groups customerGroup = groupsC.getGroupByGroupId(new Integer(2));
List<Users> usersCollection = (List<Users>) customerGroup.getUsersCollection();
usersCollection.add(current);
//List<Groups> groupList = groupsC.getAllGroups();
customerGroup.setUsersCollection(usersCollection);
// Updating the group using GroupsController
groupsC.updateGroup(customerGroup);

//groupList.add(customerGroup);
//current.setGroupsCollection(groupList);
getFacade().create(current);

我获得连接表(groups_has_user)的唯一方法是同时将组添加到组表中,但是每个用户都有自己的行,我认为这不是目的。很多人问过这个问题,但即使我读了这些,我也无法弄清楚。

谢谢并抱歉! 萨米人


我成功了。我的代码很乱,我把它清理掉了,这很有帮助。我不太确定为什么更新组表会向用户表插入新用户,但这对我来说没问题。首先,我更新了 groups-table 并将用户插入到 users-table 中,但我总是遇到一个异常,即已经存在 pk (用户名就是 pk)。因此它对用户表进行了两次插入,但现在工作正常。不再需要向组表添加行,只需向联合表和用户表添加行。

// Add current new user to the customer-group
            usersCollection.add(currentUser);
            customerGroup.setUsersCollection(usersCollection);

            // Updating the group using GroupsController, THIS INSERTS USER TO USERS-table as well!!
            groupsC.updateGroup(customerGroup);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPA ManyToMany 对于用户和组? 的相关文章

随机推荐

  • 在R闪亮的页面加载时调用javascript函数

    我添加了对 css 和 javascript 文件的引用 如下所示 tags link rel stylesheet type text css href rtp css tags script type text javascript s
  • QOpenGLWidget更新如何不会导致paintGL事件?

    我正在记录呼叫update and paintGL 但不知何故 只发生更新 PaintGL 被调用了几次 然后就再也没有调用过 这怎么可能 窗口是可见的并且isVisible 每次都返回 Trueupdate 叫做 具体来说 我从QGLWi
  • Ghub 脚本:向下拖动鼠标并按鼠标左键(LUA)自动点击

    所以基本上我试图使用 Ghub Lua 脚本机制来解释标题中的内容 发布下面我所拥有的代码 EnablePrimaryMouseButtonEvents true function OnEvent event arg if IsKeyLoc
  • java中的单词高亮显示

    我想针对特定的情况突出显示这些词time 就像卡拉 OK 应用程序一样 每个单词都有一个特定的突出显示时间 我可以计时 但不知道在哪里 如何在特定的持续时间内突出显示一个单词 在 stackoverflow 和 google 上搜索了很多
  • 在 Azure Function 中安装 Powershell 模块

    我将 Azure Function 2 0 与 Powershell 结合使用 并在安装 Powershell 模块时出现以下错误 有什么办法可以消除这个错误 一般来说 我们不需要管理员权限来安装 NuGet 依赖项 I also trie
  • Reactjs:意外的标记“<”错误

    我刚刚开始使用 Reactjs 正在编写一个简单的组件来显示 li标记并遇到此错误 意外的标记 我已将示例放在下面的 jsbin 中http jsbin com UWOquRA 1 edit html js 控制台 输出 请让我知道我做错了
  • 获取所有打开的 Excel 文档

    我需要使用自己的数据创建 xls 文件 但文件可能已被创建并由用户打开 1 如果文件不存在 新的应用程序类 工作簿 Add 另存为 2 如果文件存在且未打开 没问题 转到 1 3 如果文件存在并且被用户打开 需要找到它的工作簿并修改工作表的
  • PyQT:旋转 QLabel,使其定位在对角线上而不是水平定位

    我正在开发一个触摸屏应用程序 其中图形用户界面空间非常紧张 我想稍微旋转 QLabel 使其垂直或在对角线上稍微偏移 有什么建议么 我在 QLabel 界面上找不到任何相关内容 非常感谢 QLabel不这样做 但您可以轻松创建自己的包含一些
  • 使用 CSS3 过渡对不可设置动画的属性进行动画处理

    在我的应用程序中 我使用以下内容对页面上元素的不透明度进行动画处理 s transition property opacity transition duration 250ms 当然 有特定于供应商的版本 进而 s hidden opac
  • 标签是 XHTML 中的块级元素吗?

    我知道在HTML4 0中 p tag 不是块级元素 那么在 XHTML 1 0 中呢 谢谢 这是HTML4 0的参考http www w3 org TR html401 struct text html P 元素代表一个段落 它不能包含块级
  • 面向非美国开发者的 Paypal Android SDK

    我是一名非美国开发人员 正在构建一个也可以在美国境外运行的 Android 应用程序 我搜索了一段时间有关 Android SDK 何时在美国境外可用的信息 但没有找到任何信息 我正在寻找一种将 Paypal 支付与我的应用程序集成的方法
  • Unix 文件名中应限制哪些字符?

    考虑一个Save As带有自由文本条目的对话框 用户可以在其中输入文件名作为自由文本 然后单击Save按钮 然后 软件会验证文件名 如果名称有效则保存文件 在 Unix 文件系统上 验证中应应用哪些规则 以后在转义特殊字符等方面操作该名称并
  • 找不到管道“safeResourceUrl”

    由于我正在尝试将 YouTube 视频动态嵌入到我的 Angular 2 应用程序中 因此正在努力解决一些安全错误 在这里找到了关于使用 Pipe 来清理 url 的答案 但是遇到这个当前错误 找不到管道 safeResourceUrl S
  • Java加载二进制文件

    请告诉我最好 最快的方法 1 将非常小的二进制文件加载到内存中 例如图标 2 加载 读取大小为 512Mb 的非常大的二进制文件 也许我必须使用内存映射IO 3 当您不想考虑大小 速度而只需要做一件事时 您的常见选择 将所有字节读入内存 谢
  • 消除GOT寄存器的冗余负载?

    我正在处理一些在编译为 PIC 位置无关代码 时速度慢 70 80 的代码 并寻找缓解该问题的方法 问题的一个重要部分是 gcc 坚持在每个函数中插入以下内容 call i686 get pc thunk bx addl GLOBAL OF
  • SV 或 UVM 中的正则表达式

    我需要调用哪些函数才能在 Systemverilog UVM 中使用正则表达式 注意 我不是问如何使用正则表达式 只是问方法名称 首先 如果您想使用正则表达式 您需要确保您使用的是与其 DPI 代码一起编译的 UVM 库 即UVM NO D
  • 验证 Rails 中的网站所有权

    有关类似主题的最新讨论 请检查this问题出来了 验证特定用户是否拥有网站所有权的最佳方法是什么 假设您有这个模型 class User lt ActiveRecord Base has many websites end 为了确保用户确实
  • 如何使用 YouTube API 获取特定直播视频的当前观看人数?

    如何使用YouTube API获取实时视频的当前观看人数 我可以使用视频源请求来查看当前观看者的数量 如下所示 它会返回随机视频 但我需要获取特定视频的当前观看者 所以当我使用视频请求时 像这样 当前没有Viewers字段 在线查看Coun
  • 获取 BigQuery 项目中所有 BigQuery 表的上次访问日期

    我知道如何获取表上次修改但未访问的日期 是否可以获得最后一次读取表的时间 是否有查询或 API 可以获取此信息 如果你有审计日志在 BigQuery 中 您可以编写如下查询 WITH tables AS SELECT FORMAT s s
  • JPA ManyToMany 对于用户和组?

    同样的问题在这里 但这对我没有帮助 我有三个表和多对多连接 在我的 JSF 应用程序中 我尝试添加用户 在我的组表中 有三个不同的组 管理员 客户和用户 我做了什么 将数据插入 jsf 表单后 用户单击 保存 名为 usersControl