Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA/Hibernate:删除@OneTONE不可变实体引用的实体无效_Java_Hibernate_Jpa_Spring Data Jpa - Fatal编程技术网

Java JPA/Hibernate:删除@OneTONE不可变实体引用的实体无效

Java JPA/Hibernate:删除@OneTONE不可变实体引用的实体无效,java,hibernate,jpa,spring-data-jpa,Java,Hibernate,Jpa,Spring Data Jpa,我有一个主表Lot和一个数据库视图LotValues(其中包含一些计算字段…)。 视图LotValues具有与Lot相同的id 这是主要实体批次: @Entity @Table(name = "FDE_LOT") public class Lot { @Id private String id; private String name; @OneToOne(mappedBy = "lot", fetch = FetchType.LAZY) priva

我有一个主表
Lot
和一个数据库视图
LotValues
(其中包含一些计算字段…)。 视图
LotValues
具有与
Lot
相同的
id

这是主要实体
批次

@Entity
@Table(name = "FDE_LOT")
public class Lot {

    @Id
    private String id;

    private String name;

    @OneToOne(mappedBy = "lot", fetch = FetchType.LAZY)
    private LotValues lotValues;

}
这是数据库视图
LotValues
,因此我将其定义为
@Immutable
实体:

@Entity
@Immutable
@Table(name = "FDE_LOT_VALUES")
public class LotValues {

    @Id
    private String id;

    @MapsId
    @JoinColumn(name = "id")
    @OneToOne(fetch = FetchType.LAZY)
    private Lot lot;

    private Double size;

}
当我调用
lotRepository.delete(id)
时,Hibernate对Lot实体和LotValues实体执行两个SELECT查询,但不执行delete查询

如果我在主实体
lot
中删除
@OneToOne(mappedBy=“lot”,fetch=FetchType.LAZY)
,则执行删除查询


为什么会这样?可能@Immutable实体的主键定义错误?

解决了将引用设置为null的问题

LotValues lotValues = lotValuesRepository.findOne(id);
lotValues.setLot(null);

Lot lot = lotRepository.findOne(id);
lot.setLotValues(null);

lotRepository.delete(id);

已解决设置为空引用的问题

LotValues lotValues = lotValuesRepository.findOne(id);
lotValues.setLot(null);

Lot lot = lotRepository.findOne(id);
lot.setLotValues(null);

lotRepository.delete(id);

您是否在OneTONE映射中尝试使用
cascade=CascadeType.ALL
?是否在OneTONE映射中尝试使用
cascade=CascadeType.ALL