如何在多对一关系中保存空子项

时间:2015-11-07 07:19:43

标签: hibernate

如何使用customerlookup null

来持久保存salesorder实体 关系是 在销售订单实体

@Column(name="customer_id")
private int customerId;

@ManyToOne  
@JoinColumn(name="customer_id", referencedColumnName="customer_id", columnDefinition="integer", unique=true, nullable=true, insertable=false, updatable=false)
@NotFound(action=NotFoundAction.IGNORE)
private Customer customerLookup;
客户实体中的

@Id
@Column(name="customer_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int customerId

我总是有错误:没有给定标识符的行存在 因为customerLookup设置为null。 基本上我需要通过将customer_id和customerlookup设置为null来保存没有客户数据的销售订单(客户表/实体不需要更改)

表格结构

CREATE TABLE `tb_so` (
  `so_id`               int(11)         NOT NULL AUTO_INCREMENT,
  `so_code`             varchar(45)     DEFAULT NULL,
  `so_created`          datetime        DEFAULT NULL,
  `shipping_date`       datetime        DEFAULT NULL,
  `customer_id`         int(11)         DEFAULT '0',
  `walk_in_cust_det`    varchar(255)    DEFAULT NULL,
  `so_type`             varchar(45)     DEFAULT NULL,
  `status`              varchar(45)     DEFAULT NULL,
  `created_by`          int(11)         DEFAULT '0',
  `created_date`        datetime        DEFAULT NULL,
  `updated_by`          int(11)         DEFAULT '0',
  `updated_date`        datetime        DEFAULT NULL,
  `remarks`             varchar(255)    DEFAULT NULL,
  PRIMARY KEY (`so_id`)
);


CREATE TABLE `tb_customer` (
  `customer_id`     int(11)     NOT NULL AUTO_INCREMENT,
  `customer_name`   varchar(45) DEFAULT NULL,
  `address`         varchar(45) DEFAULT NULL,
  `city`            varchar(45) DEFAULT NULL,
  `phone`           varchar(45) DEFAULT NULL,
  `npwp_num`        varchar(45) DEFAULT NULL,
  `price_level_id`  int(11)     DEFAULT NULL,
  `status`          varchar(15) DEFAULT NULL,
  `remarks`         varchar(45) DEFAULT NULL,
  `created_by`      int(11)     DEFAULT '0',
  `created_date`    datetime    DEFAULT NULL,
  `updated_by`      int(11)     DEFAULT '0',
  `updated_date`    datetime    DEFAULT NULL,
  PRIMARY KEY (`customer_id`)
);

感谢

1 个答案:

答案 0 :(得分:1)

您可以在客户表中以Guest客户的身份创建客户记录,然后在销售订单中指定此Guest客户的ID。这很好,因为您也可以获得客户销售的统计数据。 希望这会有所帮助。