Hibernate JPA一个多关系子表行未被删除
我有2个实体Order和Item,它们之间的关系为1:N,Order是父表,Item是子表。当我删除订单时,我希望相应的项目也被删除。但它并没有发生,而是将子表中的OrderId设置为“null”。这是在项目表的数据库中创建孤立行 这是我的配置:我使用Spring、Hibernate作为JPAVendor和mysql数据库Hibernate JPA一个多关系子表行未被删除,hibernate,jpa,Hibernate,Jpa,我有2个实体Order和Item,它们之间的关系为1:N,Order是父表,Item是子表。当我删除订单时,我希望相应的项目也被删除。但它并没有发生,而是将子表中的OrderId设置为“null”。这是在项目表的数据库中创建孤立行 这是我的配置:我使用Spring、Hibernate作为JPAVendor和mysql数据库 @Entity @Table(name="T_ORDER") public class Order { @Id @GeneratedValue(strat
@Entity
@Table(name="T_ORDER")
public class Order {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String customer;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="ORDER_ID")
private Collection items = new LinkedHashSet();
}
项目实体
@Entity
public class Item {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@ManyToOne
private Order order;
private String product;
private double price;
private int quantity;
我只有2JPA属性集
key="hibernate.show_sql"=true
key="hibernate.hbm2ddl.auto"
无法确定还需要执行哪些操作才能解决此问题。孤儿删除=true可确保子表中没有孤儿
@OneToMany(cascade=CascadeType.ALL, orphanRemoval=true )
删除JPA cascade–javax.persistence.CascadeType,替换为Hibernate cascade–org.Hibernate.annotations.cascade,替换为CascadeType.XXXXX 这看起来像是JPA和Hibernate级联注释之间的不兼容问题 JPA只支持
– Persist
– Merge
– Remove
– Refresh
– All
JAPA目前不提供这些Hibernate
其他级联选项级联选项
– save-update
– delete
– lock
– evict
– delete-orphan
@OneToMany(cascade=CascadeType.ALL,insertable=true,updateable=true)
@JoinColumn(name=“订单号”)
@OneToMany(cascade=CascadeType.ALL,insertable=true,updateable=true)@JoinColumn(name=“ORDER\u ID”)