Hibernate双向一对多数据关联:一个盒子Box有多个卡片card @Entity
@Table(name="BOX")
public class Box
{
@Id
private Integer id; @OneToMany(fetch=FetchType.LAZY )
@JoinColumn(name="BOX_ID")
@org.hibernate.annotations.Cascade(
value={org.hibernate.annotations.CascadeType.SAVE_UPDATE,
org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
@org.hibernate.annotations.IndexColumn(name="POS_NO", base=0)
private List<Card> cards = new ArrayList<Card>(); ....
}
@Entity
@Table(name="CARD")
public class Card
{
@Id
private Integer id; @ManyToOne
@JoinColumn(name="BOX_ID")
private Box box @Column(name="POS_NO")
private Integer posno ; ....
}我如此注释映射是否存在问题?
我执行删除一个Card时报错。。public class bus
{
public Box delandGet(Integer boxId, Integer delCardid){
Box bx = getHibernateTemplate().get( Box.class, id );
List<Card> cds = bx.getCards();
Card del = null;
int di = -1;
for(int i=0; i<cds.size() ; i++){
Card c = cds.get(i);
if(c.id.equals(delCardid){
del = c;
di = i;
break;
}
}
if(di != -1){
cds.remove(di);
del.setBox(null);
getHibernateTemplate().delete( del ) ;
}
}
}后台:执行sql不对!!清各位贤达执教?在此本人多多感谢!Hibernate: update CARD set BOX_ID=null, POS_NO=null where BOX_ID=? and id=?
Hibernate: update CARD set BOX_ID=null, POS_NO=null where BOX_ID=? and id=?
@Table(name="BOX")
public class Box
{
@Id
private Integer id; @OneToMany(fetch=FetchType.LAZY )
@JoinColumn(name="BOX_ID")
@org.hibernate.annotations.Cascade(
value={org.hibernate.annotations.CascadeType.SAVE_UPDATE,
org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
@org.hibernate.annotations.IndexColumn(name="POS_NO", base=0)
private List<Card> cards = new ArrayList<Card>(); ....
}
@Entity
@Table(name="CARD")
public class Card
{
@Id
private Integer id; @ManyToOne
@JoinColumn(name="BOX_ID")
private Box box @Column(name="POS_NO")
private Integer posno ; ....
}我如此注释映射是否存在问题?
我执行删除一个Card时报错。。public class bus
{
public Box delandGet(Integer boxId, Integer delCardid){
Box bx = getHibernateTemplate().get( Box.class, id );
List<Card> cds = bx.getCards();
Card del = null;
int di = -1;
for(int i=0; i<cds.size() ; i++){
Card c = cds.get(i);
if(c.id.equals(delCardid){
del = c;
di = i;
break;
}
}
if(di != -1){
cds.remove(di);
del.setBox(null);
getHibernateTemplate().delete( del ) ;
}
}
}后台:执行sql不对!!清各位贤达执教?在此本人多多感谢!Hibernate: update CARD set BOX_ID=null, POS_NO=null where BOX_ID=? and id=?
Hibernate: update CARD set BOX_ID=null, POS_NO=null where BOX_ID=? and id=?
解决方案 »
- 请问谁有《数据结构与算法分析Java语言描述》的电子版
- org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException求助
- 求助!!! ext+ssh2实现树形结构显示
- 用jasperreports做的excel线很乱
- sturts标签做除法运算时得不到整数
- 对于在frame框架中的用js传值问题
- 下个月要做产品供应链了...但我现在还没有概念...
- 实际开发中的xml
- 有哪位同仁用过openedit?有什么好的建议和文档,分享一下,多谢.
- 超傻瓜级别问题,但望指教,俺是新手
- 在MyEclipse DBBrowse里连接oracle 无法编辑表 提示cannot edit
- Javar,您会见死不救吗?
本人试过一样不行
主要很奇怪?hibernate 为何要先要更新为NULL
Hibernate: update CARD set BOX_ID=null, POS_NO=null where BOX_ID=? and id=?
这个del实体你赋了null值,那么数据库就找不到要删除的记录,所以删不了,你应该让del对象是一个
对应了数据库中的一条记录,才能删掉