0
實體正確的DDL我有兩個實體的人&狀態與多對一關係問題創建使用的EclipseLink
@Entity
@Table(name = "PERSON")
public class Person implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "FIRST_NAME")
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
@JoinColumn(name = "STATUS_ID", referencedColumnName = "ID")
@ManyToOne(cascade = CascadeType.ALL)
private Status status;
// setters & getters
}
和
@Entity
@Table(name = "STATUS")
public class Status implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Integer id;
@Column(name = "ABBREVIATION")
private String abbreviation;
@Column(name = "TITLE")
private String title;
@Basic(fetch=FetchType.LAZY)
@OneToMany(mappedBy = "status")
private Collection<Person> personCollection;
// setters & getters
}
當我嘗試自動生成,這些實體的我得到的數據庫表以下DDL:
CREATE TABLE `person` (
`ID` INT(11) NOT NULL AUTO_INCREMENT,
`FIRST_NAME` VARCHAR(255) NULL DEFAULT NULL,
`LAST_NAME` VARCHAR(255) NULL DEFAULT NULL,
`NICK_NAME` VARCHAR(255) NULL DEFAULT NULL,
`STATUS_ID` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`ID`),
INDEX `FK_PERSON_STATUS_ID` (`STATUS_ID`),
CONSTRAINT `FK_PERSON_STATUS_ID` FOREIGN KEY (`STATUS_ID`) REFERENCES `status` (`ID`)
)
CREATE TABLE `status` (
`ID` INT(11) NOT NULL AUTO_INCREMENT,
`ABBREVIATION` VARCHAR(255) NULL DEFAULT NULL,
`PERSONCOLLECTION` LONGBLOB NULL,
`TITLE` VARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY (`ID`)
)
顯然有些問題,因爲我的status
表中不需要有PERSONCOLLECTION LONGBLOB
字段。 我是否在做錯了映射?
使用:Netbeans的8,的EclipseLink,JPA 2.1和MySQL 5.6
去除@basic的伎倆。因爲OneToMany關係在默認情況下被延遲加載,所以我應該使用'@OneToMany(mappedBy =「status」,fetch = FetchType.LAZY)'而不是'@OneToMany(mappedBy =「status」)'''。 – 2014-12-02 02:29:18