我希望使用 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/