java - 如何向 View 添加主键?

标签 java mysql sql hibernate

我希望使用 Hibernate 将数据库 View 映射到 Java 对象,但由于我的 View 中没有 Id,所以我无法执行此操作。

如何将 View 中的列设置为主键?

@Entity
@Table(name = "employmentinformationview")
public class EmploymentInformationView implements Serializable {

    //@Id
    //No primary key

    @Column(name = "InfoID")
    private int infoId;

    @Column(name = "EmpID")
    private String empId;

    ...

}

最佳答案

按照 Piotr 的建议,选择在您的 View 中唯一的一列或一组列。如果您有一个唯一且不为空的列,那么您可以选择它作为主键。

例如,要将empId设为主键,您可以尝试以下操作:

@Id
@Column(name = "EmpID")
private String empId;

但是,如果您有多个列可以形成复合键,那么您需要使用 @EmbeddedId 创建一个复合键:

@Entity
@Table(name = "employmentinformationview")
public class EmploymentInformationView implements Serializable {

    @EmbeddedId
    @AttributeOverride(name="infoId", column=@Column(name="InfoID")
    @AttributeOverride(name="empId", column=@Column(name="EmpID")
    EmploymentViewId id;

    ...

}

复合键被声明为 Embedabble 类:

@Embeddable
class EmploymentViewId implements Serializable {
    int infoId;
    String empId;
}

关于java - 如何向 View 添加主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25519401/

相关文章:

mysql - 无法在 openfire mysql 数据库中创建表

sql - SQL 过滤器中的 CASE 与 OR

mysql - Ruby - Rails - SQL 查询 - 重新排序搜索词中的单词

mysql - 按分数对 mysql 中的用户进行排名

java - SWT应用程序: Are Draggable Tabs Possible?

java - 在Java中写入具有特定编码的文件

mysql - 从字符串到整数的转换错误

java - 由于包含在布局中的 NullPointerException 而获取 "Unfortunately, my_app has stopped."

java - 尝试在 while 循环中使用 Try catch 直到用户正确回答而不输入无效数据(Java)

PHP MYSQL 选择最近24小时和之前24小时的数据