2017-02-24 59 views
0

Groovy/Grails對我來說更多新手問題。嘗試將域類序列化爲JSON時出現Grails堆棧溢出錯誤

的Groovy版本2.4.8版本的Grails 2.5.1

我曾嘗試多種方式來序列化我的領域類的一個實例或域類的實例的ArrayList。

當試圖序列化單個實例時,出現堆棧溢出錯誤。

代碼和堆棧跟蹤如下所示

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  '' 

顧問,案例,與企業類:

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 = { 
    } 
} 

編輯:

我發現了一個根本性的問題,我的領域類/表格可能與此有關,需要解決。

我試圖做一個簡單的從用戶表獲得,我得到一個錯誤消息,指出沒有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 

用戶類

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); 

編輯:

具有用戶表/類的固定發行者。用戶是Postresql中的關鍵字,因此我只是將其重構爲EndUser。

+0

你可以發佈您的案例與企業類的細節? – LeslieV

+0

@LeslieV Ok補充說,謝謝! – NewDev

回答

1

我懷疑您的數據結構存在問題,導致JSON構建器進入無限循環。

您可能要查看此對問題信息的日期:https://issues.apache.org/jira/browse/GROOVY-7682

這可能代替工作:

import grails.converters.JSON 
def json = new JSON(a1) 
+0

謝謝,仍然沒有工作,我得到錯誤'拋出方法'java.lang.RuntimeException'異常。無法評估grails.converters.JSON.toString()'。我發現了一個不同的問題,並認爲我應該關注這個問題,因爲它非常重要。另一個錯誤是用戶類/表錯誤。由於某些原因,我無法從桌子上拉出任何東西,我會將信息添加到原始問題中。 – NewDev