2

私は基本クラスを持っています:

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);

ここで何が欠けていますか?

4

1 に答える 1