当前位置: 首页 > 知识库问答 >
问题:

“Basic”属性类型不应为“Mapped Superclass”

姬飞飙
2023-03-14

我在我的项目中使用Spring数据JPA。当实体被保存或更新时,我想跟踪CreatedBy和LastModifiedBy,以了解哪个用户执行该活动。但我面临的问题是,我有两种不同类型的用户。这些是系统用户和加油机。这两种用户类型都有权在任何实体中执行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;
}

此外,我还有一个带有@MappedSuperClass注释的公共类,该类由SysUser和refuer扩展。但当我试图将公共类添加为如下所示的字段时

“Basic”属性类型不应为“Mapped Superclass”

private CommonEntity crUsr;
private CommonEntity upUsr;

那么我怎样才能做到这一点呢?有人能帮我吗?提前谢谢。


共有1个答案

南门飞扬
2023-03-14

嗯,你可以在这里做一件事。创建一个名为User的公共类,将SysUser和refuer中的所有公共属性放在该类中。然后可以在类中扩展它,并在子类中只保留不同的字段。这样,任何执行该操作的用户都将属于用户类。

之后,你可以在课堂上做类似的事情:

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;
}

这应该可以解决你的问题。

 类似资料:
  • 我是Spring启动的新手。我尝试使用Spring Security和Hibernate实现登录和注册功能。 首先,我使用Hibernate从数据库生成持久性映射实体类。我需要在UserEntity类中实现UserDetails接口,但问题发生了。 我无法在UserDetails中实现这些方法。 尝试实现GetAuthories时出错。以下是错误信息。 “Basic”属性类型不应是容器。检查信息:

  • 我正在试用IntelliJ IDEA,它警告我一个我不太理解的冬眠协会。 一面: 为了检查一下精神状况,我看了这篇文章,也看了这篇文章。

  • “一对多”属性值类型不应为“持久性实体”

  • 我正在引用另一个实体类中的实体,并出现此错误。下面是示例代码。我有这些课程在坚持。还有xml。 是什么导致了这个问题?我正在使用Spring数据JPA和Hibernate。

  • 您好,我正在建立一个动物园微服务,包括动物、员工、客户和价格表。我的动物微服务可以工作,但在我的员工微服务中,我遇到了一个错误,即没有为类型“EmployeeModel”找到属性“name”。在问这个问题之前,我已经在网上搜索了几个小时,还有一些类似的问题。我在模型中没有“名字”employee_name,我只是感到困惑,不知道如何修复它。任何指导/建议/信息将不胜感激:)第一次发布,所以我希望我

  • 我使用的是完全修补过的Visual Studio 2013。我正在尝试使用JQuery、JQueryUI和JSRender。我也在尝试使用打字。在ts文件中,我得到如下错误: 类型“{}”上不存在属性“fade div”。