问题标签 [grails-orm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
inheritance - TablePerHierarchy 对于抽象类总是假的?
根据Grails GORM 指南,域类的子类与父类共享同一个表,除非 tablePerHierarchy 设置为 false。
由于“抽象”关键字,我找不到有关以下映射语句是否被忽略的信息
我的数据库不包含 Item 表,并且每个子类一个表(tablePerHierarchy==false 的预期状态)。
我是否需要使项目具体但在验证中不允许它?我计划在创建表单中使用 <select> 选择一个带有子类的 ItemController。
grails - Grails 中除字符串以外的其他类型的映射
我在其中创建了带有地图的简单域类。
条形图将被创建为:
...如http://www.grails.org/GORM+-+Collection+Types中所述:
静态 hasMany 属性定义了 Map 中元素的类型。地图的键必须是字符串。
现在我的问题是 - 是否可以创建字符串以外的值映射?我可以使用纯 Hibernate(元素映射)来实现这一点 - 任何想法如何将它移植到 Grails?
grails - 在 grails 中,如何断开对象与其休眠会话的连接?
我正在尝试这样做,但我得到了错误。
“具有相同标识符值的不同对象已与会话相关联”
看起来我需要从休眠会话中删除 dbObject 。
hibernate - 休眠加载功能被排除在grails之外?
我注意到Grails休眠插件不支持休眠加载功能?有人知道这是为什么吗?在我看到的所有文档中,似乎从数据库中删除对象的公认方法是执行 get(),对象 id 后跟 delete()。虽然这可行,但它会造成不必要的数据库命中。这是一个有意识的设计决定吗?
grails - 如何解决在单个域中有 2 个 belongsTo
我有以下域:用户、角色、公司。User 和 Role 是 m:n 关系,Company to User 是 1:m,User to Company 是 1:1。我对用户域的定义有疑问。这里是:
我想从用户访问公司,以便 user.company 将给我分配他的公司。不允许这种修改:
这是错误:
请注意,也不能这样做:
由于 User-Role 具有 m:n(也已由 'authorities' 变量指定)。
还有其他解决方法吗?谢谢。
hibernate - 如何在 Grails 中持久化枚举集合?
关于如何在 Grails 中持久化枚举集合的任何想法?
Groovy 枚举:
我想在 Grails 域类中使用这个枚举。域类如下所示:
在我的 create.jsp 中,我希望能够选择多个 MyEnums 并具有以下行:
我遇到的问题是当我尝试创建一个新的测试仪时,我收到一个 500 错误说:
grails - 如何向用于在 Grails 中继承的 DB 列“类”添加索引?
当使用table-per-hierarchy继承时,GORM 创建一个 'class' 列来存储实例的类名。
我想向该列添加数据库索引,因为我的许多 SQL 查询都包括where class='com.myapp.Mychildclass'
. 但是,我没有成功使用此代码:
我在没有创建索引的情况下尝试了此代码的不同版本。
我怎样才能做到这一点?
grails - 如何将 nvarchar 设置为 GORM 中的表列
如何将列的类型设置为 nvarchar(160)?我很难让这里的示例代码与我的目标相关。我已经尝试过了:
我遇到了这个错误:原因:org.hibernate.MappingException:无法确定类型:nvarchar,在表:twitter_status,对于列:[org.hibernate.mapping.Column(text)]
最后,我将 MySQL 5 用于我的数据库服务器。
提前致谢。
orm - 使用 GORM DSL 将多个域对象映射到同一个表
我正在旧数据库上创建一个 grails 应用程序。
有一个表,我想从中创建几个不同的域对象(在下面的示例中,Type1、Type2 和 Type3)。
表是这样的:
所以我想创建3个不同的域类,每个包含一个名为“description”的字段,并对应一个特定的“type”,因为行代表不同的概念。
是否有任何类型的约束允许我按类型过滤行?
我的意思是,我可以做类似的事情:
然后我希望 Type1.list() 产生如下查询:
更新 :
实际上文档说我可以使用鉴别器来实现这一点。
但是,我尝试将我的课程设置如下:
我激活了休眠 SQL 跟踪,而不是看到
我懂了
鉴别器似乎完全忽略了我的自定义列名:-(
我正在使用 Grails 1.2.1
grails - 在 AfterInsert / AfterUpdate 中修改对象
我有一个域对象,它保存基于参数的计算结果,这些参数是同一域对象的属性。我想确保任何时候用户更改参数,它都会重新计算并正确保存到数据库中。
我正在尝试使用 afterInsert(首先确保计算正确)和 afterUpdate 来做到这一点。
但是,由于我的计算试图修改对象本身,所以它不起作用 - 抛出各种休眠异常。
我试图将 afterUpdate 代码放入事务中,但这没有帮助。恐怕我在这里遇到了循环依赖问题。
我现在得到的例外是:
GORM 事件是为更简单的用例设计的吗?我很想得出结论,修改你正在保存的对象不是要走的路。