2012-02-02 145 views
3

我有2个类:Entry和Content。一对一删除级联

public class Entry implements Serializable { 
    @OneToOne(cascade=CascadeType.ALL) 
    private Content content; 
} 

和内容有自己的价值观(名字等等等)...我想要做的是,如果一个内容的删除,我想删除的任何条目浩与相关...

这它不是tipical孤儿问题(我不是删除条目!进出口删除内容)

项可以具有或不相关的内容......和existenc是entrys的independient内容...

我怎么能说休眠“嘿...如果你要删除一个内容找到任何相关的FK并删除它!“

回答

0

进行关联双向的,级联去除:

public class Content { 
    ... 
    @OneToOne(mappedBy = "content", cascade = CascadeType.REMOVE) 
    private Entry entry; 

} 
+0

我正在和一位同事谈论这件事,他也这么说!它不是一个坏主意,但如果我这样做,我必须创建一个FK在我的内容表ponting一个入口?我认为这不正确(或maby它是但即时看到它错了)但我不想在我的表中添加FK(它感觉不对)!如果我不需要在我的内容表中添加FK,并且这会“神奇地”工作,那么......上帝保佑你! – BrunoX 2012-02-02 18:26:44

+0

'mappedBy =“content”'意味着:该关联由关联的另一侧进行映射,使用条目表中的外键。你不需要任何额外的外键。阅读hibernate参考手册,因为您必须理解使用Hibernate时协会的工作方式。 – 2012-02-02 18:38:31

1

为什么不建立从内容到输入如下链接:

public class Content implements Seralizable { 
    @OneToOne(cascade=CascadeType.REMOVE, optional=true) 
    private Entry entry; 
} 

请注意可选属性。这表示内容可能没有与您在文章中所说的相关的条目。

+0

我正在和一位同事谈论这件事,他也这么说!它不是一个坏主意,但如果我这样做,我必须创建一个FK在我的内容表ponting一个入口?我认为这不正确(或maby它是但即时看到它错了)但我不想在我的表中添加FK(它感觉不对)!如果我不需要在我的内容表中添加FK,并且这会“神奇地”工作,那么......上帝保佑你! – BrunoX 2012-02-02 18:25:52