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

时间:2017-02-10 23:23:49

标签: hibernate grails gorm

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

JailBooking {   整数id,   字符串名称,   案例 }

案例{   整数id,   字符串causeNumber,   字符串caseType,   String someFlag,   String someOtherFlag }

现在,由于表/列权限,我们有一个用户组具有选择/插入/更新完整JailBooking表的完全权限,但只能在Case中选择id和causeNumber字段。尝试在JailBooking上设置Case记录时,任何尝试对Case进行读取都会导致异常,因为要为域中的所有列加载Case调用的查询。要保留JailBooking记录,我们实际上只需要Case中的ID列。

我知道,当懒惰提取对象时,通常会返回一个未初始化的代理,其中只包含域的id字段。有没有办法手动获取这个或类似的对象,只尝试从Case表中访问id列,并且可以接受持久化JailBooking记录?

如果它完全影响答案,我正在使用Grails 2.5.5。

1 个答案:

答案 0 :(得分:0)

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

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