Groovy/Grailsの初心者の問題が増えています。ドメインクラスをJSONにシリアル化しようとするとGrailsのスタックオーバーフローエラーが発生する
私は私のドメインクラスの一つのインスタンスまたはそのドメインクラスのインスタンスのArrayListのをシリアル化する複数の方法を試してみましたが、2.5.1
Groovyのバージョン2.4.8 Grailsのバージョン。
単一のインスタンスをシリアル化しようとすると、スタックオーバーフローエラーが発生します。
class Advisor {
String firstName
String lastName
String fullName
String city
String state
Firm firm
static belongsTo = [Case, Firm]
static hasMany = [cases:Case]
static constraints = {
}
}
class Case {
String caseCode
String internalComment
String externalComment
Date dateCreated
String createdBy
Date dateUpdated
String updatedBy
static belongsTo = [owner:User, caseStatusType:CaseStatusType]
static hasMany = [advisor:Advisor]
static mapping = {
dateCreated sqlType: "date"
dateUpdated sqlType: "date"
}
static constraints = {
dateCreated(nullabe: false)
dateUpdated(nullable: false)
}
}
class Firm {
String name
static constraints = {
}
}
編集:コードとスタックトレースが
def getAdvisors(String keystrokes, String firm) {
def advisors = priceBlotterService.advisorsForKeystrokes(keystrokes, "", 30)
def a1 = advisors[0]
def json = JsonOutput.toJson(a1)
}
Caused by InvocationTargetException: null
->> 198 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run . . . in java.lang.Thread
Caused by StackOverflowError: null
->> 100 | invoke in org.codehaus.groovy.reflection.CachedMethod
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 62 | getProperty in groovy.lang.MetaBeanProperty
| 42 | getValue in groovy.lang.PropertyValue
| 388 | getProperties in org.codehaus.groovy.runtime.DefaultGroovyMethods
| 290 | writeObject in groovy.json.JsonOutput
| 329 | writeArray in ''
| 286 | writeObject in ''
| 424 | writeMap in ''
| 294 | writeObject in ''
| 329 | writeArray in ''
| 286 | writeObject in ''
| 424 | writeMap in ''
顧問、ケース、と企業クラスの下に表示され
I /私のドメインクラスの基本的な問題を発見しましたこれと何か関係があり、解決する必要があるテーブル。
私はユーザーテーブルから簡単に取得しようとすると、IDフィールドがないことを示すエラーメッセージが表示されます。何が起こっているのか把握するのに苦労している。詳細は以下の通りです。
コードの行
User[] users = User.findAll()
エラーメッセージ
org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not extract ResultSet; bad SQL grammar [n/a]; nested exception is org.postgresql.util.PSQLException: ERROR: column this_.id does not exist Position: 8
Userクラス
class User {
String firstName
String lastName
static constraints = {
}
}
ユーザ・テーブルのDDL
CREATE TABLE "user"
(
id BIGINT DEFAULT nextval('user_id_seq'::regclass) PRIMARY KEY NOT NULL,
first_name VARCHAR(30),
last_name VARCHAR(30),
version BIGINT
);
CREATE UNIQUE INDEX user_id_uindex ON "user" (id);
編集:
ユーザーテーブル/クラスの固定発行者。 UserはPostresqlのキーワードなので、EndUserにリファクタリングしました。
は、あなたのケースと企業クラスの詳細を投稿することができますか? – LeslieV
@LeslieV OK、ありがとう! – NewDev