【问题标题】:Delete object in OneToOne relationship ConstraintViolationException删除 OneToOne 关系中的对象 ConstraintViolationException
【发布时间】:2018-06-19 06:37:12
【问题描述】:

我正在尝试删除作为关系所有者的实体,但出现如下异常:

org.h2.jdbc.JdbcSQLException:参照完整性约束 违规:“FKS59BBPCYQ1GUKBWWA61TYF8YF:PUBLIC.RESERVATIONS FOREIGN KEY(CAR_LICENSE_ID) REFERENCES PUBLIC.CARS(LICENSE_ID) ('EPA13S')"; SQL语句:

我知道这是因为试图删除另一个对象使用 fk_key 引用的对象。这是我的模型:

public class Reservation
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @NotNull
    @Enumerated(EnumType.STRING)
    private DriverType driverType;

    private LocalDateTime startTime;

    private LocalDateTime stopTime;

    @OneToOne(cascade = CascadeType.PERSIST)
    private Car car;

    private BigDecimal cost;
}

public class Car
{
    @Id
    @NonNull
    @Size(min = 6, max = 6)
    String licenseId;

    @OneToOne(mappedBy = "car", cascade = CascadeType.REMOVE)
    Reservation reservation;
}

我怎么可能处理这种情况?我想在预订结束时从停车场中删除汽车,因为我不需要它,并且许可证 ID 为 pk_key 使得即使前一个已经结束,也容易尝试插入带有即将到来的预订的新车。

删除汽车:

carRepository.deleteByLicenseId(reservation.getCarLicenseId());

@Query("DELETE FROM Car c where c.licenseId = :licenseId") void deleteByLicenseId(@Param("licenseId") String licenseId);

【问题讨论】:

  • 能否请您发布删除汽车的代码。
  • 添加在底部

标签: spring hibernate jpa one-to-one


【解决方案1】:

我假设您正在扩展 Spring CrudRepository<Reservation, Long>

joinColumn 位于 Reservation 端,据我所知,您想要做的也是删除 Reservation。那么为什么不从拥有方删除它,这看起来像保留。

将预订更改为。

@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE})

宁可使用以下删除。

reservationRepository.delete(reservation);

【讨论】:

    【解决方案2】:

    这是一种双向关系。将此添加到Car 类:

    public void removeReservation() {
        if (this.reservation != null) {
            this.reservation.setCar(null);
            this.reservation = null;
        }
    }
    

    致电car.removeReservation()

    然后删除汽车。

    【讨论】:

      猜你喜欢
      • 2019-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多