2012-03-29 24 views
7

Tôi muốn biết liệu có thể sử dụng @PrePersist@PreUpdate với Ebean và Play! 2.0. Nếu tính năng này được kích hoạt như thế nào. Tôi đã thấy rằng đã có thêm một tính năng này vào tháng pull request, nhưng tôi không thể thực hiện công việc này trên Play 2.0.Có thể sử dụng @PrePersist và @PreUpdate với eBean và Play! 2.0?

Cảm ơn

+0

Theo https://github.com/playframework/Play20/pull/113, bạn có thể làm như vậy với BeanPersistListener, mặc dù tôi không biết, cách định cấu hình trong Play2. – sealskej

Trả lời

3

Có vẻ như con đường để đi là để thực hiện các BeanPersistController, trong đó cung cấp tùy chọn trước và sau chế biến.

Để cấu hình nó trong Play, sửa đổi các tập tin application.conf, as such:

ebean.default="models.*,models.adapters.YourPersistController".

4

Không phải là một câu trả lời trực tiếp, nhưng bạn có thể mô phỏng các tính năng này bằng cách ghi đè phương pháp Model lớp trong mô hình của bạn, ví dụ:

public class Post extends Model { 

    // .... 

    @Override 
    public void save() { 
     this.createDate = new Date(); 
     this.modifyDate = new Date(); 
     super.save(); 
    } 

    @Override 
    public void update(Object o) { 
     this.modifyDate = new Date(); 
     super.update(o); 
    } 


} 
1

Tôi thực sự vào cuối ngày này nhưng bạn có thể sử dụng này: https://gist.github.com/1547244. Bạn sẽ cần phải đăng ký lớp này trong bạn application.conf như thế này:

ebean.default="models.*, models.sgcore.SGBeanPersistController" 
10

Nếu mục tiêu của bạn chỉ là thiết createdAt hoặc updatedAt lĩnh vực, và bạn đang sử dụng EBean, hãy thử @CreatedTimestamp@UpdatedTimestamp. Xem here. Tôi thích sử dụng phương pháp tiếp cận của Biesior, nhưng nó dường như thất bại trên Cascades - các phương pháp không bao giờ được gọi.

@Column(name="created_at") 
@CreatedTimestamp 
private Date createdAt; 

@Column(name="updated_at") 
@UpdatedTimestamp 
private Date updatedAt; 
Các vấn đề liên quan