Java 删除-多个实体-实体仍然存在

Java 删除-多个实体-实体仍然存在,java,hibernate,h2,Java,Hibernate,H2,我刚进入Hibernate,我已经开始做一个小项目。 我想测试添加和删除的所有类型的关系。 我不了解如何管理删除。。。对许多人来说,这似乎效果不错 我使用H2数据库 我有很多关系: 工作有0个或多个步骤,因此:最后是java和sql 我已经创建了一些实体,然后我只想从数据库中删除一个工作 细节 我创建了一个Junit进行测试,并显示了我的数据库: - save new work : "workOne" - save new work : "workTwo" - save new file : "

我刚进入Hibernate,我已经开始做一个小项目。 我想测试添加和删除的所有类型的关系。 我不了解如何管理删除。。。对许多人来说,这似乎效果不错 我使用H2数据库

我有很多关系: 工作有0个或多个步骤,因此:最后是java和sql

我已经创建了一些实体,然后我只想从数据库中删除一个工作

细节

我创建了一个Junit进行测试,并显示了我的数据库:

- save new work : "workOne"
- save new work : "workTwo"
- save new file : "fileone"
- save new step : "stepOne" 
  - stepOne.setWork(workOne)
- save new step : "stepTwo" 
  - stepOne.setWork(workOne)
  - stepOne.setFile(fileOne)
要保存:

entityManager.getTransaction().begin();
entityManager.save(object);
entityManager.getTransaction().commit();
在数据库上按sql请求显示>>>确定所有我的实体都以良好的关联显示:

workOne - ID = 10
workTwo - ID = 11

fileOne - ID = 20

stepOne - ID = 40 / ID_WORK = 10 / ID_DOS = null
stepTwo - ID = 41 / ID_WORK = 11 / ID_DOS = 20
现在我想测试删除同一测试中的工作

// Remove a work
    entityManager.getTransaction().begin();
    entityManager.remove(workOne);
    entityManager.getTransaction().commit();
// Display BDD
>> The workOne has not been deleted from database ... (no hibernate delete on logs)
我希望:

修井10将被删除 第一步也是。。。因为我们不能没有工作就迈出一步 谢谢

爪哇:

h2.sql:


你的@OneToMany工作和步骤之间的关系在哪里?这是一种单向关系。我只需要通过编辑步骤添加关系。
@Entity
@Table(name = "T_WORK")
public class Work {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE)
  private long id = 0L;
  @Column(name = "LABEL")
  String label;

@Entity
@Table(name = "T_STEP")
public class Step{

  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE)
  private long id = 0L;

  @ManyToOne(cascade = {CascadeType.ALL })
  @JoinColumn(name = "ID_WORK")
  Work work;

  @OneToOne(cascade = {CascadeType.ALL })
  @JoinColumn(name = "ID_FILE")
  File file;

  @Column(name = "LABEL")
  private String label;
  @Column(name = "STATUS")
  private String status;
create table T_WORK (
ID number(10) not null,
LABEL varchar2(64) not null,
constraint PK_WORK primary key (ID)
);

create table T_STEP (
ID number(10) not null,
ID_WORK number(10) not null,
ID_FILE number(10),
LABEL varchar2(64) not null,
STATUS varchar2(64),
constraint PK_STEP primary key (ID),
CONSTRAINT FK_STEPS_WORK FOREIGN KEY (ID_TRA) REFERENCES T_WORK(ID),
CONSTRAINT FK_STEP_FILE FOREIGN KEY (ID_DOS) REFERENCES T_FILE(ID)
);