Java 是否可以通过模型在DB中保存会话的值
在保存或更新任何bean之前,我在获取userId和其他属性以在数据库中保存和持久化时遇到问题,如审核操作和在数据库中保存createdBy和modifiedBy,我在这个问题中找到了createdBy和modifiedBy的有用答案:: 这是我的班级:Java 是否可以通过模型在DB中保存会话的值,java,session,playframework-2.0,ebean,Java,Session,Playframework 2.0,Ebean,在保存或更新任何bean之前,我在获取userId和其他属性以在数据库中保存和持久化时遇到问题,如审核操作和在数据库中保存createdBy和modifiedBy,我在这个问题中找到了createdBy和modifiedBy的有用答案:: 这是我的班级: @MappedSuperclass public abstract class BaseModel extends Model { @Id @Column @GeneratedValue(strategy=Genera
@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();
}
}
您可以注意到,我已经重写了save方法(因此我将进行更新),因此当我调用bean(如product.save()
时,我将id
保存给添加或更新的用户。但我有一个类似的问题没有回答
我可能可以添加一个有参数的方法来保存和调用super,比如:
public void save(int userId) {
boolean isInstanceOfAccount = this instanceof Account;
if (!isInstanceOfAccount) {
updatedBy = String.valueOf(userId );
// etc to
}
super.save();
}
但我已经有了代码,我不想在我所有的类中进行修改,如果我想添加更多或删除参数,我需要重构
最酷(最佳实践)的解决方案是什么
现在我简单而愚蠢的问题是:如何从会话传递到模型,或者如何在保存或更新时将参数(如用户登录时的用户ID)保存到模型中使用?我认为这是一个老生常谈的问题,当我经历时,我找到了它的解决方案,但如果您查看答案,您可以在此处看到我的最新答案和问题: 它不使用cookie存储令牌,或者您可以使用cookie并从控制器读取令牌