jpa使用mysql的一对一关系

时间:2015-09-22 20:24:37

标签: java mysql jpa

这是我的表定义

CREATE TABLE IF NOT EXISTS `store` (
`store_id` INT NOT NULL AUTO_INCREMENT,
`store_name` VARCHAR(1024) NOT NULL,
`store_user` INT NOT NULL,
`store_address` INT NOT NULL,
`store_type` INT NOT NULL,
`created_date` DATETIME NOT NULL,
`updated_date` DATETIME NOT NULL,
PRIMARY KEY (`store_id`)
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `store_address` (
`address_id` INT NOT NULL AUTO_INCREMENT,
`address_line_1` VARCHAR(1024) NOT NULL,
`address_line_2` VARCHAR(1024) NOT NULL,
`address_line_3` VARCHAR(1024) NULL,
`city` VARCHAR(45) NOT NULL,
`locality` VARCHAR(100) NOT NULL,
`pincode` CHAR(6) NOT NULL,
`latitude` DECIMAL(8,6) NULL,
`longitude` DECIMAL(9,6) NULL,
`state` VARCHAR(45) NOT NULL,
`created_date` DATETIME NOT NULL,
`updated_date` DATETIME NOT NULL,
PRIMARY KEY (`address_id`),
CONSTRAINT `FK_STR_STR_ADR`
FOREIGN KEY (`address_id`)
REFERENCES `store` (`store_address`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

我试图在商店和它的地址之间进行1-1映射。考虑到DDL没问题,在生成JPA实体Store.java时看起来像这样:

@Entity
@Table(name="store")
public class Store
{
 @Basic
 @Column(name="created_date", nullable=false)
 private Date createdDate;

 @OneToOne(fetch=FetchType.LAZY, mappedBy="store",    cascade=CascadeType.MERGE)
 private StoreAddress storeAddress;

 @Basic
 @Column(name="store_address", columnDefinition="INT")
 private int storeAddress2;

 /////

为什么Store.java中有字段storeAddress2?我认为这是我的商店插入失败。有什么帮助吗?

0 个答案:

没有答案
相关问题