1

FlexJson を使用して Spring Roo コントローラーで json オブジェクトを逆シリアル化しようとしていますが、例外がスローされ、解決できません。

DaysOfWeek.java

public enum DaysOfWeek {

    SUNDAY("Sunday"),
    MONDAY("Monday"),
    TUESDAY("Tuesday"),
    WEDNESDAY("Wednesday"),
    THURSDAY("Thursday"),
    FRIDAY("Friday"),
    SATURDAY("Saturday");

    private final String description;

    DaysOfWeek(String description){
        this.description = description;
    }

    public String toString(){
        return description;
    }
}

CallDetail.java

public class CallDetail extends CalendarEvent {

    @NotNull
    private String title;

    @NotNull
    @Enumerated
    private CallFrequency frequency;

    @ElementCollection(targetClass = DaysOfWeek.class)
    @Enumerated
    private Set<DaysOfWeek> daysOfWeek;
}

CallDetailController.java

@RequestMapping(method=RequestMethod.POST, headers={"Accept=application/json"})
public ResponseEntity<String> createFromJson(@RequestBody String json) {
    CallDetail callDetail = null;

    try {
        callDetail = CallDetail.fromJsonToCallDetail(json); 
    } catch (Exception e) {
        e.printStackTrace();
    }
    .
    .
    .
}

JSP

//Create JSON Object containing basic CallDetail information
var callDetail = {
    "title" : callDetail_title.val(),
    "description" : callDetail_description.val(),
    "agent" : JSON.parse(callDetail_agent.val()),
    "allDay" : callDetail_isAllDayCall,
    "frequency" : callDetail_frequency,
    "tasks" : JSON.parse("[" + callDetail_tasks.find('option').map(function() { return $(this).val(); }).get().join(',') + "]")
};
callDetail.daysOfWeek = JSON.parse("[" + callDetail_weekdays.map(function() { return $(this).val(); }).get().join(',') + "]");
var jsonData = JSON.stringify(callDetail);

JSON の出力 daysOfWeek は、コントローラーに送信される JSON オブジェクトで次のようにレンダリングされます: {..."daysOfWeek":"[MONDAY,TUESDAY,WEDNESDAY]"...}

メソッドが呼び出されると、fromJsonToCallDetail()次の例外がスローされます。

org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction

Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Enum

列挙型のセットを保存しようとしているだけなので、誰か助けてもらえますか?

4

0 に答える 0