私は基本クラスを持っています:
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Version;
import play.db.ebean.Model;
@MappedSuperclass
public class TimeStampable extends Model {
@Id
@GeneratedValue
public Long id;
@Column(name = "created_at")
public Date createdAt;
@Column(name = "updated_at")
public Date updatedAt;
@Version
public int version;
@Override
public void save() {
if (this.id == null) {
createdAt();
} else {
updatedAt();
}
super.save();
}
@Override
public void update() {
updatedAt();
super.update();
}
@Override
public void update(Object o) {
updatedAt();
super.update(o);
}
@PrePersist
void createdAt() {
this.createdAt = this.updatedAt = new Date();
}
@PreUpdate
void updatedAt() {
this.updatedAt = new Date();
}
}
そして2機種
public class Request extents TimeStampable {
@OneToMany(cascade = CascadeType.ALL)
public List<Response> responses = new ArrayList<Response>();
}
public class Response extents TimeStampable {
}
Request オブジェクトを保存しようとすると、DB の created_at updated_at フィールドに Request オブジェクトが正しく設定されていることがわかりますが、Response オブジェクトの場合、それらの値は null です。応答オブジェクトの他のフィールドには、期待される値 (私が入力したもの) があります。
リクエストを保存する方法は次のとおりです。
Request req = new Request();
Response res = new Response();
// code to populate response fields
request.add(res);
Ebean.save(req);
ここで何が欠けていますか?