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
列挙型のセットを保存しようとしているだけなので、誰か助けてもらえますか?