Grails + GORM:GORM 中默认的 equals() 实现是什么?

2023-12-13

当我做domainObj1 == domainObj2Grails 中的对象是按 ID 进行比较的吗?如果不是,它们如何比较?


首先,您需要了解 GORM/Grails 并没有做任何特别的事情equals()。除非你自己实现equals()在您的域类上,它将默认为 Java/Groovy 实现。默认情况下,这意味着变量必须指向同一个实例。

现在,让人有点困惑的是 Hibernate。 Hibernate 使用一个恒等映射(一级缓存);当您从 GORM 获取相同的域实例时,Hibernate 实际上会第二次从缓存返回相同的实例。从而使两个变量指向同一个实例并且看起来相等。

例如:

def something = Something.get(1)
def somethingElse = Something.get(1)
assert (something == somethingElse) // true
something.name = 'I changed this'
assert (something == somethingElse) // still true
something.id = 123 // no idea why you would EVER do this
assert (something == somethingElse) // still true
assert (something.id == somethingElse.id) // true, since it's the same instance!
assert (something.name == somethingElse.name) // true, since it's the same 

即使对实例进行了更改

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

Grails + GORM:GORM 中默认的 equals() 实现是什么? 的相关文章

  • Grails 2.0 中的 dateCreated、lastUpdated 字段

    我有一个使用 Grails 1 3 7 的应用程序 我刚刚将其迁移到 Grails 2 0 该应用程序利用自动dateCreated and lastUpdated用于管理与对象的创建和修改相关的时间戳的字段 升级后 我收到以下错误 Run
  • 我应该在 grails 应用程序中的哪里放置瞬态域类?

    我应该在 grails 应用程序中的哪里放置瞬态域类 即我有一个Action将被传递和使用但从未保存的类 这应该是在grails app domain文件夹 还是其他地方 grails app domain用于持久域类 但并非所有应用程序的
  • Grails 2.3 IntegrationSpec 不能为事务性 false

    我最近升级到 Grails 2 3 并尝试将所有旧测试迁移到 spock 集成测试 但它在清理时失败了 因为我的测试是非事务性的 Grails 文档说测试可以是非事务性的 但我们需要手动处理它 但在这里似乎不太正确 因为我在扩展 Integ
  • UrlMappings 将 URL 指向 Grails 中的资产管道文件

    在 Grails 3 0 中 如何将 URL 映射到assets folder 例如 http localhost 8080 favicon ico gt grails app assets images bookmark ico 我尝试了
  • 如何重写 GORM/Grails 的 addTo* 和 RemoveFrom* 方法?

    我尝试重写 Grails GORM 提供的动态方法 addTo 但它似乎不起作用 这是代码 class Match static hasMany players Player matchPlayers MatchPlayer void ad
  • Chrome 和 JSESSIONID

    chrome 出现以下问题 我已经在服务器上运行 Grails 1 3 7 应用程序 我注意到 当我从 Chrome 请求静态内容 例如非动态 html 文件 时 Chrome 会创建两个 JSESSIONID Cookie 第一个是登录窗
  • Grails 操作被调用两次。帮助!

    我正在编写一个 grails 应用程序并遇到一个奇怪的问题 单击页面上的提交按钮时 关联的操作会快速连续调用两次 这会导致一切都严重破坏 以前有其他人见过这个问题吗 下面是我的代码 从普惠制页面
  • 如何使用 Spring Resource.groovy 正确注入 Grails 服务

    使用 Grails 2 2 1 我定义了以下 Grails 服务 package poc class TestService def helperService class HelperService 我已经用过TestService如下
  • Grails:如何查询多对多映射中的对象?

    您好 我有以下域类 class Student int age static hasMany courses Course class Course String name static hasMany students Student 我
  • Grails 渲染 PDF 文件

    我正在尝试在网页中呈现 PDF 文件 但使用以下语法时 我得到了一个奇怪的字符组合 render file new File path to file pdf fileName myPdfFile pdf 有谁知道除了上面的行之外我还需要添
  • 部署 Grails 应用程序时出错 - 初学者

    我在部署 Grails 应用程序时遇到问题 一切都在本地测试环境中运行 ERROR localhost startStop 1 错误 context GrailsContextLoader 错误 初始化应用程序 使用名称创建 bean 时出
  • Grails 默认包名称

    我是 Grails 的新手 而且非常喜欢它 我想将我的课程放在像这样的包中org company project module model 重复对我来说很痛苦create domain class
  • grails/mysql 时区更改

    完成更改应用程序时区的最佳方法是什么 在我看来 必须发生以下情况 服务器 TZ 已被系统管理员更改 mysql必须重新启动 数据库中每个基于时间的列都必须使用convert tz 或等效方法更新所有值 因此 要么必须编写一个 mysql 脚
  • Grails - 在 Criteria API 中加入关联两次

    可以在标准中加入两次协会吗 def criteria User createCriteria def results criteria list childObject1 eq childObjProp childObjProp1 chil
  • 如何在 Grails 中管理对象修订?

    我需要对我的文章实施修订系统grails网络应用程序 在搜索 grails 论坛 stackoverflow grails 插件和谷歌搜索互联网后 我最终得到了 3 个选项 Option 1 使用grails Envers 插件 see h
  • 如何在我的应用程序中取消授权/撤销 LinkedIn 令牌

    我有一个 grails 应用程序 我希望用户授予我访问他 她的 LinkedIn 帐户的权限 以获取信息并以不同的方式显示信息 我能够执行以下操作 获取授权码 使用该授权码获取访问令牌 我将该访问令牌与到期日期一起存储在我的用户实体中 当过
  • 使用 Grails GORM 从旧数据库中的 char 字段中去除尾随空格

    映射时去除尾随空格的可能解决方案有哪些char遗留数据库中的字段 我看到以下选项 Calling trim 在使用时 控制器 视图等 重写属性访问器以返回 trim 使用 Hibernate UserType 修剪空格 我倾向于重写属性访问
  • 以无法破坏的方式限制表中允许的记录数量

    我们有一个 Web 应用程序 Grails 我们将根据用户数量为其出售许可证 数据库 Oracle 10g 中有一个表保存用户 客户将托管自己的软件和数据库副本 有人可以建议一些策略来限制允许存在于用户表中的记录数量 从而使客户无法合理地破
  • 从 Grails 控制器渲染视频内容

    毫无疑问又是一个愚蠢的新手问题 我在 Grails 控制器中有一个字节数组 其中包含视频文件 确切地说是 mp4 文件 的内容 我熟悉如何从 grails 控制器渲染 JSON XML 和其他基本类型 但我找不到任何显示如何输出视频的示例
  • Grails:SpringSecurity 角色层次结构未按预期工作

    我正在 Grails 2 0 1 中使用 springsecurity 插件 我的角色层次结构和其他 s2 属性如下所示 grails plugins springsecurity userLookup userDomainClassNam

随机推荐

  • 使用PHP备份MySql数据库

    我在 MySql 中有一个相当大的数据库 我需要每天左右对其进行备份 我需要能够从任何计算机上进行备份 因此我考虑制作一个 php 脚本来执行此操作并将此 php 脚本放在网上 当然具有密码保护和授权等 以便只有我可以访问它 但我想知道 这
  • PHP 中的日期比较

    我目前有一个日期作为 255 个字符的 VARCHAR 存储在我的 SQL 数据库中 我将此字符串声明为 within an object date date DATE RFC822 现在 在稍后的编码中 我意识到我需要实际比较日期 我最初
  • gradle 同步时遇到问题 - 找不到 lint-gradle-api.jar (com.android.tools.lint:lint-gradle-api:26.1.2)

    我已将 Android Studio 更新到 3 2 1 现在因以下问题而停止 找不到 lint gradle api jar com android tools lint lint gradle api 26 1 2 在以下位置进行了搜索
  • Django 内容类型表 - 身份验证权限

    我想在下面添加一个权限auth permission桌子 当我手动插入另一个权限时 我需要插入一个content type id还 这是参考content type桌子 我不知道它有什么作用 如果用户没有该权限 我想删除一组 HTML 行
  • 在Python中使用“十进制”

    有人可以解释一下下面发生了什么吗 我使用Python 3 3 1 gt gt gt Decimal 0 1 Decimal 0 1 Decimal 0 1 Decimal 0 3 Decimal 0 0 2 gt gt gt Decimal
  • let 关键字和闭包?

    我正在学习ES6的新特性 我有一个关于 let 的问题 它涉及这段代码 for let i 0 i lt 45 i var div document createElement div div onclick function alert
  • 单元测试 反模式目录

    Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 反模式 必须至少存在两个关键元素才能正式区分实际的反模式与简单的坏习惯 坏实践或坏主意 一些重复的行动 过程或结构模式 最初看起来
  • Android Oreo:保持已启动的后台服务处于活动状态而不将其设置为前台(但有通知)?

    我正在开发一个媒体应用程序 我想知道如何保留我的应用程序在 Oreo 之前的一些旧行为 例如 即使服务不再设置为前台 也可以让通知和服务 用于播放 挂在那里 当播放开始时 我们调用 startService MediaPlaybackSer
  • c# 比较两个文本文件并生成一个有差异的新文件

    我正在寻找快速比较 2 个文本文件 15000 行 并获取两个文件中不同的输出字符串的最佳方法 第一个是旧库存 新库存是当前库存 我想生成第三个 其中包含 file2 和 file1 之间不同的字符串 这 2 个文件中 95 是相似的 非常
  • 注册。 delphi中Android应用程序的大小

    当我通过 Delphi Xe7 生成 Android 应用程序时 App Name Apk 文件为 6 MB 当我在移动设备中安装时 应用程序大小为 25 MB 请向我提供是否有任何其他设置可以减小应用程序大小的信息 在代码中我只有单一形式
  • 将 rxGlm 转换为 GLM 时出错

    我在将 rxGlm 模型转换为普通 glm 模型时遇到问题 每次我尝试隐藏我的模型时 都会遇到相同的错误 Error in qr lm object lm object does not have a proper qr component
  • 数据网格视图标题网格颜色

    这是一个 VB NET 应用程序 我们在数据网格视图中显示 SQL 语句的输出 我正在使用 NET 2005 我们需要使网格控件上的标题分隔符的颜色与窗体上的 GridColor 的颜色相同 我们尝试查看 DataGridView 控件的所
  • 如何在 NSDictionary 中 POST NSDictionaries 的 NSArray 而不会出现问题?

    我确实知道如何做到这一点 这相当简单 问题是它不起作用 这是我用来发布数据的函数 void updateWebsitesUsingParameters NSDictionary parameters AFHTTPRequestOperati
  • Sitecore:打开 HTML 缓存会阻止回发行为

    我有一个带有 ASP 下拉列表的 sitecore 页面 表单上的数据是从下拉列表中选定的值填充的 当下拉列表中的所选项目发生更改时 会触发回发 在回发中 新选定的项目将添加到查询字符串中 并且用户将被重定向 为了可链接性 我最近启用了 H
  • Python Tkinter 使用 PIL 将画布保存为图像

    我有这段代码 可以让用户在画布上绘图并将其保存为jpeg file 正如中提到的这个帖子 我尝试使用 PIL 在画布上和内存中并行绘制 以便我可以将其保存为jpeg代替postscript 它似乎一直有效 直到我发现我用 PIL 保存的一些
  • docx4j 查找和替换

    我有带有一些占位符的 docx 文档 现在我应该用其他内容替换它们并保存新的 docx 文档 我开始于docx4j并找到了这个方法 public static List getAllElementFromObject Object obj
  • 通过转换器绑定每个按钮,使背景颜色变亮

    我想在单击时使按钮背景变亮 所以我做了以下事情
  • 如何修复错误 E0277:不满足特征绑定 `[usize]: std::marker::Sized` ?

    我正在尝试将数组传递给函数 fn my func xs usize gt usize 0 fn main let arr 329 457 657 let res my func inp 我收到错误 error E0277 the trait
  • 如何从 C# 以编程方式控制 Win7 中的麦克风和麦克风增强设置?

    Windows 7 有一些新的音频设置 我无法从我的 C 应用程序中控制这些设置 具体来说 在输入 麦克风 属性中 有一个包含麦克风和麦克风增强滑块的 级别 选项卡 以及一个麦克风静音切换 复选框 我需要以编程方式确保麦克风没有静音 但尚未
  • Grails + GORM:GORM 中默认的 equals() 实现是什么?

    当我做domainObj1 domainObj2Grails 中的对象是按 ID 进行比较的吗 如果不是 它们如何比较 首先 您需要了解 GORM Grails 并没有做任何特别的事情equals 除非你自己实现equals 在您的域类上