gpt4 book ai didi

grails - 在继承中设置Grail Domain的[class]属性

转载 作者:行者123 更新时间:2023-12-02 15:23:39 24 4
gpt4 key购买 nike

我有不同类型的用户。
每个用户都继承自一个类:AppUser。
一些用户具有AppUser的子类:AdminUser。

AppUser是否有可能成为AdminUser?
并让AdminUser成为AppUser?

我试着做appUserInstance.class = my.package.AdminUser但最终出现了ReadOnlyPropertyException

我也尝试过appUserInstance.properties = new com.michelin.dur.AppUser(appUserInstance.properties).properties->对象引用了未保存的 transient 实例

因此,我实际上能做的最好的事情就是删除/重新创建对象。
但是,这仍然是一个问题,因为指向我以前的User实例的所有链接都指向无内容。

有人对此有很好的解决方案吗?

最佳答案

您可以使用HQL做到这一点:
DomainClass.executeUpdate("update DomainClass dc set dc.class = '${newDomainClass.name}' where id = ${id}")
不过,我建议您不要这样做-HQL会跳过验证,因此,如果类AppUser和AdminUser具有不同的属性,那么这样做可能会导致数据库中的对象无效。

我会尝试通过使用权限(角色)来解决此问题,或者如果使用太多权限,则使用名为UserType的属性而不是继承来解决此问题。

如果不是这样,则重新创建用户似乎还不错-如果AdminUser和AppUser类不同,则用户实例也应该如此。

关于grails - 在继承中设置Grail Domain的[class]属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31586197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com