hibernate怎么用注解实现级联删除?

比如我有一个一对多——组对用户。我是否可以清空组里的用户,提交修改update,那边的用户就全部自动清除了?@EntitypublicclassBook{privateS... 比如我有一个一对多——组 对 用户。
我是否可以清空 组 里的 用户,提交修改update,那边的用户就全部自动清除了?
@Entity
public class Book {

private Set<Bao> baos = new HashSet<Bao>();

@OneToMany(cascade={CascadeType.ALL})
public Set<Bao> getBaos() {
return baos;
}
public void setBaos(Set<Bao> baos) {
this.baos = baos;
}
}

@Entity
@Table
public class Bao {
private Book book;

@ManyToOne
public Tao getBook() {
return tao;
}
public void setBook(Book book) {
this.book = book;
}
}
展开
 我来答
stefwujj
推荐于2017-11-26 · TA获得超过417个赞
知道小有建树答主
回答量:141
采纳率:100%
帮助的人:209万
展开全部
@OneToMany(cascade={CascadeType.ALL},orphanRemoval=true)
public Set<Bao> getBaos() {
return baos;
}
这样就行了。不过orphanRemoval只能是JPA2中才能使用,相当于说hibernate3.5之后版本支持。
更多追问追答
追问
还是没用呢。我替换为了hibernate3.6 final的版本 也更改了相应的包。如hibernate-jpa-2.0-api-1.0.0.Final.jar
程序能运行。但是就是不能级联删除。

这个@OneToMany 带 mappedBy和不带mappedBy 都试过了。

不带mappedBy让它多生成一张中间表,更新的时候可以删除掉中间表的数据,另外一头的表删不掉。
追答
不光要清空组里的用户,关键是把用户里面那个组设置为空,你mapped相当于让one方放弃关系维护,所以你才看到没有设置mapped的时候中间表删除了就是这个原因
空城旧牟1
2013-09-11
知道答主
回答量:3
采纳率:0%
帮助的人:4298
展开全部
hibernate 自动生成的表是不可以实现的,你需要需修改数据库的外键属性,你用的是mysql的话,可以把生成的表右击属性,打开设计表,点到“外键”选项卡,把删除,更新改成CASCADE,就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大志若愚_zz
2013-09-11 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:108万
展开全部

在实体类的字段上加注解

casde=DELETE
更多追问追答
追问
您说的这个我不知道怎么用。
追答

把你的两个实体类发上来,我给你改一下


给你发一个实体类的配置Demo吧

@Entity
@Table(name = "food")
public class Food implements Serializable, Comparable<Food> {
private static final long serialVersionUID = 1444309570305197674L;

@GenericGenerator(name = "generator", strategy = "increment")
@Id
@GeneratedValue(generator = "generator")
@Column
private Long id;

@NotEmpty
@Column(nullable = false)
private String name;

@Column(name = "create_time", nullable = false)
private Date createTime;

@Column(name = "update_time", nullable = false)
private Date updateTime;

@OneToMany(mappedBy = "parent", cascade = CascadeType.REMOVE, fetch = FetchType.EAGER)
@OrderBy("id asc")
private Set<Food> categories;

@ManyToOne
@JoinColumn(nullable = true)
private Food parent;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式