Hibernate JPA CascadeType.REMOVE逆

Hibernate JPA CascadeType.REMOVE逆,hibernate,jpa,hql,Hibernate,Jpa,Hql,我有一个数据库与客户和预订。每个预订有一个客户,一个客户可以有多个预订。因此,我在客户成员上标注了@manytone关系。我想如果我删除客户,预订也将被删除。但是我只能用另一种方式,如果预订被删除,客户被删除,我不想这样。这是我的密码: @Entity @NamedQueries({ @NamedQuery(name = Customer.FIND_ALL, query = "SELECT c FROM Customer c ORDER BY c.name ASC"), @Nam

我有一个数据库与客户和预订。每个预订有一个客户,一个客户可以有多个预订。因此,我在客户成员上标注了@manytone关系。我想如果我删除客户,预订也将被删除。但是我只能用另一种方式,如果预订被删除,客户被删除,我不想这样。这是我的密码:

@Entity
@NamedQueries({
    @NamedQuery(name = Customer.FIND_ALL, query = "SELECT c FROM Customer c ORDER BY c.name ASC"),
    @NamedQuery(name = Customer.FIND_BY_EMAIL, query = "SELECT c FROM Customer c WHERE c.email = :email")
})
@XmlRootElement
@Table(name = "customer", uniqueConstraints = @UniqueConstraint(columnNames = "email"))
public class Customer  implements Serializable {

private static final long serialVersionUID = 1L;

public static final String FIND_ALL = "Customer.findAll";
public static final String FIND_BY_EMAIL = "Customer.findByEmail";

@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;

@NotNull
@NotEmpty
@Size(min = 1, max = 50)
@Pattern(regexp = "[A-Za-z\\s]+")
@Column(name = "name")
private String name;



@Entity
@NamedQueries({
    @NamedQuery(name = Booking.FIND_ALL, query = "SELECT b FROM Booking b ORDER BY b.bookingDate ASC")
})
@XmlRootElement
@Table(name = "booking", uniqueConstraints = @UniqueConstraint(columnNames = {"customer", "booking_date"}))
public class Booking implements Serializable {


private static final long serialVersionUID = -1L;

public static final String FIND_ALL = "Booking.findAll";


@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;


@NotNull
@ManyToOne(cascade = {CascadeType.REMOVE})
@JoinColumn(name = "customer")
private Customer customer;

@NotNull
@Future(message = "Bookings must be in future")
@Column(name = "booking_date")
@Temporal(value = TemporalType.DATE)
private Date bookingDate;
因此,如果我删除客户,预订也应该被删除。有什么想法吗


谢谢

谢谢Nizet提供的提示。它现在正在使用下面的代码

/* Booking class */
@NotNull
@ManyToOne
@JoinColumn(name = "customer")
private Customer customer;


/* Customer class */
@OneToMany(cascade = CascadeType.REMOVE, mappedBy = "taxi")
private Set<Booking> bookings = new HashSet<Booking>();;
/*预订课程*/
@NotNull
@许多酮
@JoinColumn(name=“客户”)
私人客户;
/*客户类别*/
@OneToMany(cascade=CascadeType.REMOVE,mappedBy=“滑行”)
私有集预订=新HashSet();;

Remove cascade={CascadeType.Remove}从manytone中删除,并将其添加到关联的反向OneToMany侧。由于Customer中没有预订成员,我应该将其放在何处。是否必须在客户列表中列出预订?是的。一套会是更好的选择。阅读hibernate文档中关于双向OneToMany关联的内容。非常感谢,现在可以使用了。我会把答案贴出来