[英]How can I implement an Enum with JPA using separate Mysql Tables
我真的是使用 JPA 的新手,但仍然不知道如何實現這一點,我很樂意提供任何建議或解決方案。
Mysql 表:
CREATE TABLE REAL_STATE_TYPES (
real_state_type_id INT(6) NOT NULL,
real_state_type VARCHAR(50) NOT NULL,
PRIMARY KEY (real_state_type_id)
);
CREATE TABLE REAL_STATES (
address VARCHAR(30) NOT NULL,
admin_id VARCHAR(15) NOT NULL,
real_state_type_id INT(6) NOT NULL,
block VARCHAR(3) NOT NULL,
internal_id INT(5) NOT NULL,
PRIMARY KEY (address, block, internal_id),
FOREIGN KEY (real_state_type_id) REFERENCES REAL_STATE_TYPES (real_state_type_id),
FOREIGN KEY (admin_id) REFERENCES ADMINS (admin_id)
);
所以 REAL_STATE 的 id 是 REAL_STATE_TYPE,如果我想保持這個表的關系,我怎么能在 java 代碼中 map 到 Z9CE3D1BD8890F16A0C44809359 代碼中。
我的 java 類是:
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name= "real_state_types")
public class RealStateType implements Serializable{
private static final long serialVersionUID = 5442745398170857199L;
@Id
@Column(name= "real_state_type_id ")
private int realStateTypeId;
@Column(name= "real_state_type")
@Enumerated(EnumType.STRING)
private RealStateEnum realStateType;
@OneToOne(mappedBy = "realStateType", cascade = {CascadeType.ALL})
private RealState realState;
和:
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name = "real_states")
public class RealState {
@EmbeddedId
private RealStateID realStateID;
@Column(name = "real_state_type_id")
private RealStateType realStateType;
@ManyToOne
@JoinColumn(name = "admin_id")
private Admin admin;
}
為了讓它工作,我相信你需要 1. 刪除
@OneToOne(mappedBy = "realStateType", cascade = {CascadeType.ALL})
private RealState realState;
來自 RealStateType。 2.改變
@Column(name = "real_state_type_id")
private RealStateType realStateType;
進入
@JoinColumn(name = "real_state_type_id")
private RealStateType realStateType;
在真實狀態。
否則,如果可能的話,我會刪除 RealStateType @Entity 並使用
@Enumerated(EnumType.STRING)
@Column(name = "real_state_type", nullable = false)
private RealStateEnum realStateType;
在真實狀態
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.