Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 JPA一个多关系子表行未被删除_Hibernate_Jpa - Fatal编程技术网

Hibernate JPA一个多关系子表行未被删除

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

我有2个实体Order和Item,它们之间的关系为1:N,Order是父表,Item是子表。当我删除订单时,我希望相应的项目也被删除。但它并没有发生,而是将子表中的OrderId设置为“null”。这是在项目表的数据库中创建孤立行

这是我的配置:我使用Spring、Hibernate作为JPAVendor和mysql数据库


@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”)