【问题标题】:Can Spring JPA Entity Class Contain Non-DB Fields that Are not In a DB TableSpring JPA 实体类是否可以包含不在数据库表中的非数据库字段
【发布时间】:2020-03-03 12:15:55
【问题描述】:

我在 SpringBoot 中使用 Spring JPA 和 Spring Data Rest。我有一个名为 user 的数据库表和该表的实体。我没有此应用程序的控制器。

@Entity
@Table(name = "USER")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "USER_ID")
    private Integer userid;

    @Basic(optional = false)
    @Column(name = "USER_NAME")
    private String username;
} 

现在,我需要再添加一个不是 USER 表中的列的字段。它将被一些监控工具用于跟踪目的。

@Entity
@Table(name = "USER")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "USER_ID")
    private Integer userid;

    @Basic(optional = false)
    @Column(name = "USER_NAME")
    private String username;

    private String tracer;  // this field is not in DB
} 

我得到一个 jdbc.spi.SqlExceptionHelper - 添加此字段后无效的列名“tracer”,这是有道理的,因为这个类被注释为一个实体。我的问题是:有没有办法将非数据库字段添加到实体类中?我想不是,但想知道是否有人有解决方案。谢谢。

【问题讨论】:

    标签: java spring-boot spring-data-jpa spring-data-rest


    【解决方案1】:

    是的,只需将注释 @Transient 添加到您的字段。

    您可以从 API 文档中了解更多信息:

    https://docs.jboss.org/hibernate/jpa/2.1/api/javax/persistence/Transient.html

    这里(第 37.1.2.1 节):

    https://docs.oracle.com/javaee/7/tutorial/persistence-intro001.htm#BNBQA

    希望对你有帮助。

    【讨论】:

    猜你喜欢
    • 2021-01-31
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多