【问题标题】:How create JPA/persistence for a SQL view如何为 SQL 视图创建 JPA/持久性
【发布时间】:2021-05-31 07:20:16
【问题描述】:

我实际上是在尝试使用 IntelliJ 在 Spring Boot 项目中创建 MySql 数据库的持久性。

经典表没有问题,但“视图”表出现错误消息:

没有为实体指定标识符:

这是一个视图示例:

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Objects;

@Entity
@Table(name = "employee_view", schema = "db", catalog = "")
public class EmployeeView {
    private int ageId;
    private String ageLabel;

    @Basic
    @Column(name = "age_id")
    public int getAgeId() {
        return ageId;
    }

    public void setAgeId(int ageId) {
        this.ageId = ageId;
    }

    @Basic
    @Column(name = "age_label")
    public String getAgeLabel() {
        return ageLabel;
    }

    public void setAgeLabel(String ageLabel) {
        this.ageLabel = ageLabel;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        EmployeeView employeeView = (EmployeeView) o;
        return ageId == employeeView.ageId && Objects.equals(ageLabel, employeeView.ageLabel);
    }

    @Override
    public int hashCode() {
        return Objects.hash(ageId, ageLabel);
    }
}

如您所见,没有 ID 列,因为该视图没有标识符。也许这是一个简单的问题,因为这是我第一次为视图创建持久性。我能做什么?

【问题讨论】:

    标签: spring-boot jpa view persistence identity


    【解决方案1】:

    所以,以防万一有人看这个问题,我发布我的答案:

    我刚刚添加了一个这样的假身份证:

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "iD", updatable = false, nullable = false)
    private Long iD;
    

    然后,为了确定,因为它是一个视图而不是一个表(我不必更新它),我已经像这样添加了 @Immutable 注释:

    @Entity
    @Immutable
    @Table(name = "view_object", schema = "BDD", catalog = "")
    public class ViewObject {}
    

    我不再收到错误消息,我可以构建应用程序。我不知道这是否是一个好的做法,如果专家想给我指正,我会很高兴!

    【讨论】:

      猜你喜欢
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 2017-09-26
      • 2012-03-11
      • 1970-01-01
      • 2020-03-08
      相关资源
      最近更新 更多