@OneToOne而不保存子信息

时间:2018-08-07 11:38:16

标签: java spring hibernate spring-data-jpa

这是我的问题。 我定义了两个类:

@Entity
@Table(name = "CAR")
public class Car{

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "CAR_ID", nullable = false)
        private Long idCar;

        @NotFound(action = NotFoundAction.IGNORE)
        @JoinColumn(name="BRAND")
        @OneToOne(targetEntity = Brand.class, fetch = FetchType.LAZY, cascade=CascadeType.DETACH)
        private Brand idBrand;
}

@Entity
@Table(name = "BRAND")
public class Brand{

       @Id
       @Column(name = "BRAND_ID")
       private Long idBrand;

       @Column(name = "DESCRIPTION")
       private String description;

}

我需要保存汽车而不保存品牌信息。如果尝试立即保存,则出现数据库错误:“ BRAND_ID”字段没有默认值 看来它试图保存在BRAND数据库中,但我只需要将BRAND列保存在Car对象中即可。

另一方面,如果我买了辆汽车,并且保存了一个品牌,那么我会正确地恢复它。

编辑: 我正在尝试的是使用JPA存储库保存汽车对象。该汽车装有一个Brand对象,该对象只有一个品牌ID。

Car myCar = new Car();
Brand myBrand = new Brand();
myBrand.setIdBrand(11l);
myCar.setIdBrand(myBrand);
repository.save(myCar);

谢谢。

1 个答案:

答案 0 :(得分:-1)

您需要使“ BRAND_ID”列在数据库中可为空,显然该列当前为“不为空”。

不确定该表是否使用休眠方式生成。