我有一个实体,它看起来像:

@Audited
@Data
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {

  public static final long UNSAVED = 0;

  @Id
  @GeneratedValue
  private long id;

  @CreatedDate
  @Column(name = "created_at", updatable = false)
  private ZonedDateTime createdAt;

  @CreatedBy
  @OneToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "created_by")
  private User createdBy;

  @LastModifiedDate
  private ZonedDateTime updatedAt;

  @OneToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "updated_by")
  @LastModifiedBy
  private User updatedBy;

}

我想要 @LastModifiedBy 和 @CreatedBy 以便他们设置相应的用户。但是,当我尝试保存实体时,出现异常:
java.lang.ClassCastException: Cannot cast java.lang.Long to com.intranet.users.Users

所以在我看来,它试图设置的不是实际的用户,而是 id。有没有办法让 spring 在实体上设置实际的用户,而不仅仅是它的 id?

谢谢

最佳答案

the documentation 似乎很直接地回答了这个问题:

10-07 19:34
查看更多