次の問題があります。Hibernateテンプレートを使用してMySQLデータベースからレコードのリストを読み取っています。次に、構造を変更して、JSONObjectとJSONArrayになるようにする必要があります(公式ライブラリを使用すると:http ://www.json.org/java /)。サーバー応答としてリストを使用している場合、レコードフィールドには適切な名前が付けられます(@JsonPropertyアノテーションが使用されているため)。しかし、このList要素からJSONObjectを作成しようとすると、すべてのフィールドが小文字で始まり、UIが壊れます。
これは私の「タスク」モデルです:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
@JsonAutoDetect
@JsonIgnoreProperties(ignoreUnknown = true)
@Entity
@Table(name="tasks")
public class Task {
@Id
@GeneratedValue
@Column(name="Id")
private int Id;
@Column(name="Name", nullable=false)
private String Name;
@JsonProperty("Id")
public int getId() {
return Id;
}
@JsonProperty("Id")
public void setId(int id) {
this.Id = id;
}
@JsonProperty("Name")
public String getName() {
return Name;
}
@JsonProperty("Name")
public void setName(String name) {
this.Name = name;
}
}
DBからレコードを取得するために使用されるコードは次のとおりです(不要な部分はすべて削除されています)。
public List<Task> getEvents() {
DetachedCriteria criteria = DetachedCriteria.forClass(Task.class);
return hibernateTemplate.findByCriteria(criteria);
}
private static JSONArray read() throws JSONException{
List<Task> list = getEvents();
Iterator<Task> listIterator = list.iterator();
JSONArray ret = new JSONArray();
String parentId;
while(listIterator.hasNext()){
Task task = listIterator.next();
JSONObject taskJSON = new JSONObject(task);
ret.put(taskJSON);
}
}
サーバーの応答でわかるように、すべてのフィールド名は小文字で始まります。
{"id":18,"name":"Release"}
これをオーバーライドする方法はありますか?