У меня есть модель с именем Booking, в которой есть постоянное поле DateTime.Однако я не хочу напрямую взаимодействовать с этим полем, а скорее через два поля Transient String, date и time .Проблема в том, что я понятия не имею, как / когда play загружает данные в поля - кажется, что он не использует конструктор, который я предоставляю, потому что поле DateTime всегда пустое.
public class Booking extends Model {
@Column
@Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
public DateTime datetime;
public Integer duration;
@Transient
public String date = "1970-01-01";
@Transient
public String time = "00:00";
public Booking(String date, String time, Integer duration) {
this.datetime = toDateTime(date, time);
this.duration = duration;
}
public void setDate(String dateStr) {
this.date = dateStr;
this.datetime = toDateTime(dateStr, this.time);
}
public void setTime(String timeStr) {
this.time = timeStr;
this.datetime = toDateTime(this.date, timeStr);
}
public String getDate() {
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd");
return this.datetime.toString(format); //NullPointerException here!
}
public String getTime() {
DateTimeFormatter format = DateTimeFormat.forPattern("kk:mm");
return this.datetime.toString(format);//NullPointerException here!
}
вот метод toDateTime:
private DateTime toDateTime(String date, String time){
DateTimeFormatter fmt = ISODateTimeFormat.dateHourMinute();
DateTime dt = fmt.parseDateTime(date+"T"+time);
return dt;
}