2015-11-03 190 views
0

保存數據庫會話中的值我有一個獲取userId和另一個屬性來保存和保存在我的數據庫中的問題,如審計操作並在保存或更新任何bean之前保存數據庫中的createdBy和modifiedBy,我發現在這個問題上的createdBy和modifiedBy有用的答案:Is it possible to use @PrePersist and @PreUpdate with eBean and Play! 2.0?是否有可能通過模型​​

這是我的課:

@MappedSuperclass 
public abstract class BaseModel extends Model { 

    @Id 
    @Column 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    public Integer id; 

    @Column 
    @CreatedTimestamp 
    public Timestamp createdDate; 

    @Column 
    @UpdatedTimestamp 
    public Timestamp updatedDate; 

    @Column 
    @Version 
    private long version=0; 

    @Column 
    public String updatedBy; 

    @Column 
    public String createdBy; 


    public BaseModel() { 
    } 

    @Override 
    public void save() { 
     boolean isInstanceOfAccount = this instanceof Account; 
     if (!isInstanceOfAccount) { 
      int userId = Integer.parseInt(session().get(ViewModelsConstants.User.USER_ID); 
      updatedBy = String.valueOf(userId); 
      // etc to 
     } 
     super.save(); 
    } 
} 

你可以注意到,我有重寫保存方法(所以我會做到及時更新),所以當我打電話給我的bean時,如product.save()我保存id誰添加或更新誰。但我有一個類似的懸而未決問題Session inside Model in play framework

我也許可以添加方法有參數保存和調用超級喜歡:

public void save(int userId) { 
    boolean isInstanceOfAccount = this instanceof Account; 
    if (!isInstanceOfAccount) { 
     updatedBy = String.valueOf(userId); 
     // etc to 
    } 
    super.save(); 
} 

但我有已經存在的代碼,我不想做修改在我所有的課,如果我想添加更多或刪除我需要再重構


什麼最酷的(最佳實踐)解決方案,這個參數?

我現在簡單的愚蠢問題:我如何能夠從會話傳遞給模型,或者當我保存或更新它時如何保存參數(像登錄時的userId)在模型中使用的地方?

回答

相關問題