gpt4 book ai didi

grails - Grails:在Domain类中添加新字段会导致崩溃

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

我有一个运行Grails 1.3.7的旧项目,在域类中(例如Patients),我添加了一个新字段(禁用 bool(boolean) 值,nullable为true)。

class Hospital {
hasMany = [patients: Patient]
string name

class Patient
string name
string address
boolean disabled // Added this new field

当我运行应用程序时,查询以获取所有属于医院的患者现在会抛出java.lang.IllegalArgumentException。删除新字段“已禁用”,应用程序运行正常。

基本上,导致该错误的代码类似于以下内容:
def h = Hospital.get(20)
h.patients // This causes error below. No error if I remove the new field in domain

这是错误:
Stacktrace follows:
java.lang.IllegalArgumentException
at com.x.model.Patient_$$_javassist_26.hashCode(Patient_$$_javassist_26.java)
at java.util.HashMap.put(HashMap.java:372)
at java.util.HashSet.add(HashSet.java:200)
at java.util.AbstractCollection.addAll(AbstractCollection.java:305)
at com.x.service.QueryService$_getPatientsByHospitals_closure13.doCall(QueryService.groovy:183)
at com.x.service.QueryService.getPatientsByHospitals(QueryService.groovy:180)
at com.x.service.QueryService$$FastClassByCGLIB$$a2fb92c6.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at com.x.service.QueryService$$EnhancerByCGLIB$$6756b2a.getPatientsByHospitals(<generated>)
at com.x.service.QueryService$getPatientsHospitals.call(Unknown Source)
at com.x.service.PatientsOverviewService.createSummaryRow(PatientsOverviewService.groovy:366)
at com.x.service.PatientsOverviewService$_getPatientsSummaries_closure9.doCall(PatientsOverviewService.groovy:306)
at com.x.service.PatientsOverviewService.getPatientsSummaries(PatientsOverviewService.groovy:296)
at com.x.service.PatientsOverviewService$getPatientsSummaries.callCurrent(Unknown Source)
at com.x.service.PatientsOverviewService.getPatientsOverview(PatientsOverviewService.groovy:50)
at com.x.service.PatientsOverviewService$$FastClassByCGLIB$$15a92775.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)

com.x.ui.PatientsOverviewController $ _closure2.doCall(PatientsOverviewController.groovy)
在java.lang.Thread.run(Thread.java:662)

感谢您的帮助或建议。这已经困扰了我几个小时。

最佳答案

诸如boolean之类的原始类型的属性不能为空,您需要使用包装器类(Boolean)。

关于grails - Grails:在Domain类中添加新字段会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13039148/

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