Grails 1.3.7を実行している古いプロジェクトがあり、ドメインクラス(例:Patients)に新しいフィールドを追加しました(ブール値が無効、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)at java.lang.Thread.run(Thread.java:662)
私はどんな助けや提案にも感謝します。これは私を数時間悩ませてきました。