Java 如何删除绑定表中的数据?
我有三个表:A,B和AB。A和B是典型的表,AB-表绑定它们。例如:Java 如何删除绑定表中的数据?,java,hibernate,Java,Hibernate,我有三个表:A,B和AB。A和B是典型的表,AB-表绑定它们。例如: A table _____________________ int id | varchar data 1 hello B table _____________________ int id | varchar data 1 world AB table ___________________ int a_id | int b_id 1 1 A和B有多对多关系。有时我应该从表
A table
_____________________
int id | varchar data
1 hello
B table
_____________________
int id | varchar data
1 world
AB table
___________________
int a_id | int b_id
1 1
A和B有多对多关系。有时我应该从表中删除记录。从AB中删除绑定记录也很好。但是我怎么能做到呢?这是我的努力:
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "ab", catalog = "mycatalog", joinColumns = { @JoinColumn(name = "a_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "b_id", nullable = false, updatable = false) })
private Set<B> bs= new HashSet<B>(0);
摘自:
删除级联
cascade=“delete”在“stockDailyRecords”中声明,以启用删除级联效应。删除“Stock”时,其所有引用“stockDailyRecords”将自动删除
<!-- Stock.hbm.xml -->
<set name="stockDailyRecords" cascade="delete" table="stock_daily_record" ...>
<key>
<column name="STOCK_ID" not-null="true" />
</key>
<one-to-many class="com.mkyong.common.StockDailyRecord" />
</set>
输出:
Hibernate:
delete from mkyong.stock_daily_record
where DAILY_RECORD_ID=?
Hibernate:
delete from mkyong.stock
where STOCK_ID=?
Query q = session.createQuery("from Stock where stockCode = :stockCode ");
q.setParameter("stockCode", "4715");
Stock stock = (Stock)q.list().get(0);
session.delete(stock);
Hibernate:
delete from mkyong.stock_daily_record
where DAILY_RECORD_ID=?
Hibernate:
delete from mkyong.stock
where STOCK_ID=?