簡體   English   中英

“基本”屬性類型不應為“映射超類”

[英]'Basic' attribute type should not be 'Mapped Superclass'

我在我的項目中使用 Spring 數據 JPA。 我想在保存或更新實體時跟蹤@CreatedBy@LastModifiedBy以了解哪個用戶執行該活動。 但我面臨的問題是我有兩種不同類型的用戶。 那些是SysUserRefUser 這兩種用戶類型都有權在任何實體中執行 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 注釋@MappedSuperClassSysUserRefUser擴展。 但是當我嘗試將常見的 class 添加為如下所示的文件時,它說

“基本”屬性類型不應為“映射超類”

private CommonEntity crUsr;
private CommonEntity upUsr;

那么我該如何實現呢? 任何人都可以幫助我嗎? 提前致謝。

好吧,你可以在這里做一件事。 創建一個名為User的通用 class,將SysUserRefUser中的所有通用屬性放入該 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM