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
Hibernate 一对一映射删除问题_Hibernate_Mapping_One To One - Fatal编程技术网

Hibernate 一对一映射删除问题

Hibernate 一对一映射删除问题,hibernate,mapping,one-to-one,Hibernate,Mapping,One To One,我有一个用Hibernate ORM运行的ejb模块,模型有两个POJO, 这里是第一节课: @Entity public class Vehicle implements Serializable { private static final long serialVersionUID = 1L; private Integer id; public Vehicle() { } @Id @GeneratedValue(strategy = GenerationType.IDENTIT

我有一个用Hibernate ORM运行的ejb模块,模型有两个POJO, 这里是第一节课:

@Entity
public class Vehicle implements Serializable {

private static final long serialVersionUID = 1L;
private Integer id;


public Vehicle() {

}

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

}
这是我的第二节课:

@Entity
public class Transfer implements Serializable {

private static final long serialVersionUID = 1L;
private Integer id;
private Vehicle vehicle;    
public Transfer() {
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getId() {
    return id;
}
public void setId(Integer id) {
    this.id = id;
}
@OneToOne
public Vehicle getVehicle() {
    return vehicle;
}
public void setVehicle(Vehicle vehicle) {
    this.vehicle = vehicle;
}
}
现在,当我尝试删除车辆v1实例时,出现以下错误:

Cannot delete or update a parent row: a foreign key constraint fails (`pallasmobiledb`.`transfer`, CONSTRAINT `FK_9u0s4qxviu868ir3r7sgtbuqa` FOREIGN KEY (`cpo_id`) REFERENCES `user` (`id`))

有人能说我的映射机制出了什么问题吗?

当移除车辆时,由于它是一对一映射,传输对象也将被删除。 您正在删除“车辆”实体,并且您的一对一处于“转移”状态。 有两种方法:

1-删除车辆前删除传输对象

2-您需要将删除级联到其他实体。将@OneToOne注释如下:

@OneToOne(cascade = CascadeType.ALL)

但在“车辆”实体上。。。您必须更改映射

thnaks Pras以获得快速答案,但我希望删除车辆而不删除传输,并且我必须在传输实体而不是车辆实体中进行映射,可以吗?