Java 是否可以通过模型在DB中保存会话的值

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

在保存或更新任何bean之前,我在获取userId和其他属性以在数据库中保存和持久化时遇到问题,如审核操作和在数据库中保存createdBy和modifiedBy,我在这个问题中找到了createdBy和modifiedBy的有用答案::

这是我的班级:

@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并从控制器读取令牌