Hibernate多对多,重复相同的记录

2023-12-05

我尝试使用注释进行 Hibernate 映射多对多,并使用 vaannila 中给出的示例。

http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many-to-many-using-annotations-1.html

        Set<Course> courses = new HashSet<Course>();
        courses.add(new Course("Maths"));
        courses.add(new Course("Computer Science"));

        Student student1 = new Student("Eswar", courses);
        Student student2 = new Student("Joe", courses);
        session.save(student1);
        session.save(student2);

这东西运作良好。但是,如果我稍后尝试向现有学生添加另一门课程,例如,

        Set<Course> courses = new HashSet<Course>();
        courses.add(new Course("Science"));
        Student student = new Student("Eswar", courses);
        session.save(student);

它再次在表中重复了学生 Eswar。

        +------------+--------------+
        | STUDENT_ID | STUDENT_NAME |
        +------------+--------------+
        |          1 | Eswar        |
        |          2 | Joe          |
        |          3 | Eswar        |
        +------------+--------------+

我不能将课程添加到现有的 Eswar 中吗? 我真的很感谢你对这个问题的帮助。


您首先需要从数据库获取 Student,然后将课程添加到该对象,然后保存获取的对象。

这样,您将创建一个新的学生对象,这个新的学生对象在“ID”实例变量中具有空值。在我看来,Hibernate 必须将此实例变量映射到主键进行查找,如果找到 id,则更新记录,否则插入新记录。

是的,如果您需要为现有学生添加课程,您可能需要首先从获取的学生对象中获取集合,然后在该集合中添加课程,然后保存......否则新的哈希集将只包含新课程和之前的记录将被覆盖。

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

Hibernate多对多,重复相同的记录 的相关文章

随机推荐

  • 如何在 bash shell 中使用部分读取配置文件

    我有这样的配置文件 rsync includes user data conf rsync exclude tmp pyc vendor javascript utils data 我有我想在 rsync 和该文件中的其他配置数据中排除的模
  • 网站真的需要迎合未启用 Javascript 的浏览器吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 为什么许多专业的 Web
  • Objective-C中有没有类似于C#的yield return的东西

    Objective C 中有没有类似于 C 的东西yield return 不 Objective C 中没有任何东西可以让您轻松构建可迭代的解决方案 一般来说 快速枚举Objective C 是使用与 C Java 或 C 完全不同的机制
  • 如何将odoo 8数据库升级到odoo 9?

    我正在尝试将 odoo 安装从 8 0 升级到 9 0 到目前为止我所做的如下 从生产系统备份odoo数据库 在我当前的系统中安装备份数据库作为测试 将 odoo 文件夹复制到我系统上的文件夹中 检查一下 是否一切正常 有用 更新到最新v8
  • 递归调用 Firestore

    我有一个 Firebase Firestore 其中 Components 作为根集合 集合中的每个文档 组件 可能有一个名为 children 的数组 数组中的每个项目都是另一个组件的 id 本质上是一对多关系 由于每个孩子也是一个组件
  • AWS Lambda并发请求限制以及如何增加它?

    我想要同时处理 1000 万个请求 AWS lambda 是否能够做到这一点 因为他们提到 AWS lambda 限制仅为 100 个并发请求 在 AWS 控制台内导航至支持中心 在这里您可以创建一个服务限额增加用于 AWS Lambda
  • 如何让div在页面中居中? (高度宽度)?

    愚蠢的问题 但我找不到答案 因为所有答案都假设 div 的宽度居中 我需要的是以高度和宽度的方式将 div 居中 以便位于页面的非常中心 我尝试了这个 但它只是以页面宽度而不是高度的方式将 div 居中 myDiv width 500px
  • 如何在 GAE 端点中检索自定义用户对象?

    我刚刚在我的谷歌应用程序引擎 Java 应用程序上创建了自己的自定义身份验证 这并不像我接下来要做的事情那么麻烦 身份验证工作正常 但现在我尝试向默认用户对象添加一些附加字段 这样我就不必对服务器进行如此多的调用 到目前为止我所做的是创建一
  • 使用 nohup CLI 在 PHP 后台运行 php 脚本

    我正在尝试在后台运行一个 php 脚本 但它不起作用 我只能直接从 ssh 终端运行 使用相同的 cli 脚本 在终端上 首先我访问路径 cd labs lung com br ztbot bin v2 php之后 我在后台运行我的脚本 n
  • RewriteRule htaccess 如果文件存在

    我想使用 htaccess 来检查 htaccess 文件所在的目录中是否存在名为 Offline txt 的文件 如果存在则执行以下操作 RewriteRule websiteOffline php L 并且对特定范围的 IP 地址也有例
  • 通过 php 发送电子邮件

    我第一次来这里 我有 2 个文件 index html sendemail php At index html我有我的表格的代码 section div class parallax div class container div clas
  • 如何在 Protractor/WebdriverJS 中设置默认浏览器窗口大小

    由于某种原因 当我在工作中运行测试时 浏览器会最大化 但当我在家运行测试时 它只会打开大约 50 宽度的浏览器窗口 这会导致向下滚动等方面出现一些差异 因此我理想情况下希望让它在运行测试的每台计算机上打开相同大小的浏览器窗口 最好的方法是什
  • 打印大型 Swing 组件

    我有一个 Swing 表单 其中有一个 JScrollPane 内的自定义表格 它只是一个 JPanel 而不是 JTable 子类 我正在尝试打印它 如果我只是将整个框架发送到打印机 滚动窗格就会被切断 并且如果我将框架的大小调整为滚动窗
  • DependencyProperty 作为实例变量?

    虽然网络上的大多数代码示例都使用依赖属性的静态声明 但我发现在某些情况下它们被定义为公共只读实例成员 将 DependencyProperty 定义为实例成员 而不是静态 有什么优点吗 Note 我不想讨论静态成员是好还是坏的问题 更具体地
  • 维基百科 API 是否支持 CORS 还是仅支持 JSONP?

    这个问题涉及到另一个问题 这是一年前问过的 作者询问如何使用 JavaScript 和 Wikipedia API 发出跨域请求 一条评论是 en wikipedia org 似乎不允许 CORS 建议他改用 JSONP 我知道我可以使用
  • 动态更新fabric.js路径点

    我正在尝试动态地将点添加到路径对象 当我这样做时 路径会正确渲染 但边界矩形永远不会更新 这使得用户几乎不可能在画布上选择和移动路径 正如您在下面的代码中看到的 路径最初是使用单个点创建的 然后我动态添加第二个点以及控制点 执行此操作后 边
  • 如何使用 Apache POI 将 docx 中的文本(标签)替换为 HTML?

    我们将有一些模板 docx 文件 其中会有一些标签 例如 content 我需要用 HTML 替换这个标签 为此 我想在 XWPFDocument 中使用 altChunk 元素 以下答案在如何使用 Apache POI 将 altChun
  • 使用逗号格式化数字字符串

    我想格式化数字 我见过一些在数字字符串中插入逗号的正则表达式示例 都是连续检查3位数字 然后在数字中插入逗号 但我想要这样的东西 122 as 122 1234 as 1 234 12345 as 12 345 1723456 as 17
  • C 匹配组中的正则表达式

    我一直在努力解决 C 中的正则表达式 只是 usr include regex h 我有 比方说 数百个正则表达式 其中之一可以匹配输入字符串 目前我正在这样做 实际上生成它 如下所示 数百个 do while 内部有匹配 如果不匹配则中断
  • Hibernate多对多,重复相同的记录

    我尝试使用注释进行 Hibernate 映射多对多 并使用 vaannila 中给出的示例 http www vaannila com hibernate hibernate example hibernate mapping many t