我有两张桌子,b
并且a
:
它们具有一对一的双向关系
a
有一个外键来b
定义这种关系
这个外键也被认为是a
, 和 JPA的主键@ID
我想要一个级联删除,删除相关的b
何时a
被删除
在 MySQL 中,a
'sb_id
是NOT NULL
问题是当我A
使用 JPA 存储库删除我的对象时,我会ConstraintViolationException
在其外键上得到一个。我希望a
和b
行都被删除(巧妙地从a
's 开始)。
知道我想保留,我怎么能解决这个问题:
我的数据库架构相同
a
从到的级联删除b
idb
是 JPA@Id
的a
CREATE TABLE `b` (
`dbid` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`dbid`),
);
CREATE TABLE `a` (
`b_id` int(11) NOT NULL,
KEY `b_fk` (`b_id`),
CONSTRAINT `b_fk` FOREIGN KEY (`b_id`) REFERENCES `b` (`dbid`),
);
@Entity
@Table(name = "a")
public class A {
@Id
@Column(name = "b_id")
@GeneratedValue(generator = "gen")
@GenericGenerator(name = "gen", strategy = "foreign", parameters = @Parameter(name="property", value="b"))
private Integer bId;
@OneToOne(cascade = CascadeType.REMOVE)
@PrimaryKeyJoinColumn
private B b;
}
@Entity
@Table(name = "b")
public class B {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "dbid")
private Integer id;
@OneToOne(mappedBy = "b")
private A a;
}
[编辑] 在回答评论和重新阅读我的问题的所有讨论之后,这些提案orphanRemoval确实在范围和工作中。
凤凰求蛊
holdtom
白板的微信
相关分类