Hibernate 在Grails中,如何获取域代理而不是完整记录

Hibernate 在Grails中,如何获取域代理而不是完整记录,hibernate,grails,gorm,Hibernate,Grails,Gorm,我正在处理映射到遗留数据库的域,该数据库广泛使用db级别的用户组来控制表和列的授权。我需要映射以下简化关联: 越狱{ 整数id, 字符串名, 案例 } 案例{ 整数id, 字符串原因枚举器, 字符串类型, 把国旗串起来, 串其他标志 } 现在,由于表/列权限,我们有一个用户组,该用户组拥有选择/插入/更新完整越狱表的完全权限,但在这种情况下只能选择id和causeNumber字段。当尝试在越狱时设置案例记录时,任何尝试在案例上执行读取的操作都会导致异常,因为加载案例的查询会调用域中的所有列。为了

我正在处理映射到遗留数据库的域,该数据库广泛使用db级别的用户组来控制表和列的授权。我需要映射以下简化关联:

越狱{ 整数id, 字符串名, 案例 }

案例{ 整数id, 字符串原因枚举器, 字符串类型, 把国旗串起来, 串其他标志 }

现在,由于表/列权限,我们有一个用户组,该用户组拥有选择/插入/更新完整越狱表的完全权限,但在这种情况下只能选择id和causeNumber字段。当尝试在越狱时设置案例记录时,任何尝试在案例上执行读取的操作都会导致异常,因为加载案例的查询会调用域中的所有列。为了保存越狱记录,我们实际上只需要Case中的ID列

我知道,在延迟获取对象时,通常会返回一个未初始化的代理,其中只包含域的id字段。是否有一种方法可以手动获取此对象或类似对象,该对象仅尝试从Case表访问id列,并且可用于持久化越狱记录


如果它对答案有任何影响,那么我正在使用Grails 2.5.5。

您可以使用jailBookingEntity.caseId访问id,而无需初始化代理。您可以在每个相关实体上使用“Id”后缀来获取Id值

如果您需要代理,可以使用Case.load(jailbookingtentity.caseId)