[英]'Basic' attribute type should not be 'Mapped Superclass'
我在我的項目中使用 Spring 數據 JPA。 我想在保存或更新實體時跟蹤@CreatedBy
和@LastModifiedBy
以了解哪個用戶執行該活動。 但我面臨的問題是我有兩種不同類型的用戶。 那些是SysUser
和RefUser
。 這兩種用戶類型都有權在任何實體中執行 CRUD 操作。
另一件事是,我見過大多數將@CreatedBy
和@LastModifiedBy
作為字符串字段保留的示例。 但問題是從數據庫中檢索數據時,它們作為用戶 ID(字符串值)檢索。 我需要將用戶 ID 存儲為字符串,但在檢索它時應該包含用戶的所有詳細信息,如用戶 ID、姓名、性別等。
public class Record extends Auditable<String> implements Serializable {}
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class Auditable<T> {
@CreatedBy
protected T createdBy;
@Temporal(TemporalType.TIMESTAMP)
@CreatedDate
protected Date createdDate;
@LastModifiedBy
protected T lastModifiedBy;
@Temporal(TemporalType.TIMESTAMP)
@LastModifiedDate
protected Date lastModifiedDate;
}
我也有一個常見的 class 注釋@MappedSuperClass
由SysUser
和RefUser
擴展。 但是當我嘗試將常見的 class 添加為如下所示的文件時,它說
“基本”屬性類型不應為“映射超類”
private CommonEntity crUsr;
private CommonEntity upUsr;
那么我該如何實現呢? 任何人都可以幫助我嗎? 提前致謝。
好吧,你可以在這里做一件事。 創建一個名為User
的通用 class,將SysUser
和RefUser
中的所有通用屬性放入該 class 中。然后您可以在 class 中擴展它,並僅在子類中保留不同的字段。 這樣任何一個進行操作的用戶都屬於User
Class。
之后你可以在你的 Class 中做這樣的事情:
public class Record extends Auditable<String> implements Serializable {}
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class Auditable<User> {
@CreatedBy
protected User createdBy;
@Temporal(TemporalType.TIMESTAMP)
@CreatedDate
protected Date createdDate;
@LastModifiedBy
protected T lastModifiedBy;
@Temporal(TemporalType.TIMESTAMP)
@LastModifiedDate
protected Date lastModifiedDate;
}
這應該可以解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.