Jpa 使用eclipselink从实体创建正确的ddl时出现问题
我有两个实体,一个是人,一个是身份,一个是关系Jpa 使用eclipselink从实体创建正确的ddl时出现问题,jpa,orm,eclipselink,Jpa,Orm,Eclipselink,我有两个实体,一个是人,一个是身份,一个是关系 @Entity @Table(name = "PERSON") public class Person implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Column(name = "FIRST_NAME") private String firstNa
@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
}
及
)
显然有些问题,因为我不需要在我的status
表中有PERSONCOLLECTION LONGBLOB
字段。
我的映射有问题吗
使用:Netbeans 8、Eclipselink、JPA 2.1、mysql 5.6尝试删除@basic注释也使用“列表”而不是“集合”删除@basic成功了。事实证明,我应该使用
@OneToMany(mappedBy=“status”,fetch=FetchType.LAZY)
来代替,或者甚至使用@OneToMany(mappedBy=“status”)
,因为默认情况下,OneToMany关系是惰性加载的。
@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
}
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`)