假设我的应用程序中有类似于类类的类,包含一些Long,Double,Date和String字段。这些类扩展了基类,包含一些常见字段和几种常用方法。每当我访问String类的字段(虽然是getter)时,我想对返回的值进行一些更改(例如删除html标记)。有没有比为String类型的每个字段实现getter更好的方法?继承的字段怎么样?
答案 0 :(得分:1)
不要更改Grails为您创建的默认getter / setter实现。你肯定会在各个地方弄乱你的应用程序。 Grails使用约定优于配置,因此getter / setter应该保持不变。
创建自己的方法,返回您想要的内容:对于字段标题创建方法getStrippedTitle()。您也可以将此方法添加到瞬变中。
答案 1 :(得分:1)
如果更改了设置的值,或者返回的值与设置的值不同,则会混淆Hibernate。这是因为当您从数据库加载实例时,Hibernate会将原始数据保留在其第一级缓存中,并向您返回域对象实例。刷新时,它会将当前状态与原始状态进行比较,如果更改,则会将更改推送到数据库。因此,如果您返回的值与设置值不同,但实际上没有更改该值,则Hibernate无法区分。
离开属性并创建返回更改数据的方法会更好。我使用的一个约定是,例如,如果您有String body
字段,则可以通过属性名称body
或getter getBody()
访问它,但您可以创建body()
1}} Hibernate未知的方法,并返回你想要的任何内容。