2016-02-22 43 views
0

我使用遊戲框架在Java中(ebean是我的ORM),我有這個類:Gson.toJson錯誤#1

@Entity 
@Table(name = "reservation") 
public class Reservation extends Model implements Validation { 
    @Id 
    @Column(name = "reservationId", columnDefinition = "BIGINT") 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @JsonIgnore 
    private long reservationId; 
    @Column(name = "restaurantId", columnDefinition = "BIGINT") 
    private long restaurantId; 
    @Column(name = "dateTime" , columnDefinition = "DATETIME") 
    @JsonFormat(pattern = "dd/mm/yyyy HH:mm:ss") 
    @Formats.DateTime(pattern = "dd/mm/yyyy HH:mm:ss") 
    private Timestamp dateTime; 
    @Column(name = "guestCount") 
    private int guestCount; 
    @Column(length = 300) 
    private String note; 

    public static Reservation.Finder<String, Reservation> find = new Model.Finder<String, Reservation>(String.class, Reservation.class); 

,我試圖用GSON庫序列化。我試圖做到這一點

return new Gson().toJson(Reservation.find.where().eq("reservationId", id).findUnique();); 

,但我總是得到這樣的錯誤:

akka.actor.ActorSystemImpl - Uncaught fatal error from thread [application-akka.actor.default-dispatcher-2] shutting down ActorSystem [application] 
java.lang.StackOverflowError: null 
    at java.text.DateFormatSymbols.initializeData(DateFormatSymbols.java:684) ~[na:1.8.0_71] 
    at java.text.DateFormatSymbols.<init>(DateFormatSymbols.java:146) ~[na:1.8.0_71] 
    at sun.util.locale.provider.DateFormatSymbolsProviderImpl.getInstance(DateFormatSymbolsProviderImpl.java:85) ~[na:1.8.0_71] 
    at java.text.DateFormatSymbols.getProviderInstance(DateFormatSymbols.java:359) ~[na:1.8.0_71] 
    at java.text.DateFormatSymbols.getInstance(DateFormatSymbols.java:335) ~[na:1.8.0_71] 
    at java.util.Calendar.getDisplayName(Calendar.java:2110) ~[na:1.8.0_71] 
    at java.text.SimpleDateFormat.subFormat(SimpleDateFormat.java:1125) ~[na:1.8.0_71] 
    at java.text.SimpleDateFormat.format(SimpleDateFormat.java:966) ~[na:1.8.0_71] 
    at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936) ~[na:1.8.0_71] 
    at java.text.DateFormat.format(DateFormat.java:345) ~[na:1.8.0_71] 
    at com.google.gson.internal.bind.DateTypeAdapter.write(DateTypeAdapter.java:83) ~[gson-2.5.jar:na] 
    at com.google.gson.internal.bind.DateTypeAdapter.write(DateTypeAdapter.java:41) ~[gson-2.5.jar:na] 
    at com.google.gson.internal.bind.TypeAdapters$26$1.write(TypeAdapters.java:607) ~[gson-2.5.jar:na] 
    at com.google.gson.internal.bind.TypeAdapters$26$1.write(TypeAdapters.java:600) ~[gson-2.5.jar:na] 

我讀了很多關於這一點,我明白,這可能是無限循環的地方出現,而序列化的預訂對象,但由於該對象與任何其他類沒有任何關係,所以我不明白它爲什麼會發生。

回答

2

問題出在Gson身上。 Gson已經知道將ebean轉換成Json的問題。我用傑克遜替換它,現在它可以工作。