我的@Entity
有一个字段owner
:
@Entity
@EntityListeners({TalkListener.class})
public class Talk {
private @ManyToOne(targetEntity = User.class, optional = false) User owner;
// ...
}
注意:我有一个实施@PrePersist
的监听器。从我所看到的,不鼓励从那里查找请求参数(也许这也是不可能的,我没有继续研究这个方向)。文档中有section about events,但它似乎纯粹与实体相关,而不考虑请求的上下文。
我想从经过身份验证的用户推断POST
请求的所有者。最简单的方法是什么?如果有必要覆盖POST
一个片段或链接的示例将非常感激。
更新1 :
@NeilMcGuigan建议使用Spring Data JPA auditing features,其中包含一个@CreatedBy
注释,可以清楚地解决原始问题(我会接受它作为答案)。
更新2 :
可以找到一个关于使用Spring Data JPA进行审计的好教程,以及在实体生命周期事件中获取主体的替代方法here。
出于教育目的,如果我需要从请求中访问某些值来填充我的实体中的值(比如我当前的用例不是@CreatedBy
但是有些不同的话),那会是另一种方式吗?