我遇到了将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();
}
}
你可以注意到我已经覆盖了保存方法(所以我会更新)所以当我像product.save()
那样调用我的bean时,我保存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)在保存或更新模型时在模型中使用?
答案 0 :(得分:0)
我认为这是一个古老的问题,我在经历时找到了解决方案,但是如果你想找到答案,你可以在这里看到我最新的答案和问题:
Play framework and ionic for mobile I need Security without cookies but token
它的商店代币没有cookies,或者你可以使用cookies并从控制器读取它。