//----------------------------------------------
//staff 和 module 是多对多关系@Entity
@Table(name="t_staffModule")
public class StaffModule {
private int moduleID;
private String nameSN;
private String nameCN;
private List<Staff> staffs;
@Id
@GeneratedValue
public int getModuleID() {
return moduleID;
}
//...... @ManyToMany(
cascade = {CascadeType.ALL},
mappedBy = "staffModules",
targetEntity = Staff.class
)
public List<Staff> getStaffs() {
return staffs;
}
public void setStaffs(List<Staff> staffs) {
this.staffs = staffs;
}
}//-class staff----
@ManyToMany(
cascade = {CascadeType.ALL},
mappedBy = "staffModules",
targetEntity = Staff.class
)
public List<Staff> getStaffs() {
return staffs;
}
//------------------- Staff sss = new Staff();
sss.setNickName("aaa");
List<StaffModule> staffModules = new ArrayList<StaffModule>();
StaffModule sm1 = new StaffModule(); sm1.setNameCN("模块1"); staffModules.add(sm1);
StaffModule sm2 = new StaffModule(); sm2.setNameCN("模块2"); staffModules.add(sm2);
StaffModule sm3 = new StaffModule(); sm3.setNameCN("模块3"); staffModules.add(sm3);
sss.setStaffModules(staffModules);
staffService.save(sss);//执行到这句时sql语句如下://------------------------------
2013-10-30 08:19:29,770 DEBUG SQL:111 - insert into t_staff (nickName, password, type, username) values (?, ?, ?, ?)
2013-10-30 08:19:29,770 DEBUG SQL:111 - insert into t_staffModule (nameCN, nameSN) values (?, ?)
2013-10-30 08:19:29,770 DEBUG SQL:111 - insert into t_staffModule (nameCN, nameSN) values (?, ?)
2013-10-30 08:19:29,770 DEBUG SQL:111 - insert into t_staffModule (nameCN, nameSN) values (?, ?)// ******* 但是 中间表中没有数据。 这就是存在的问题 ********////--------------------
但是在 staffService.save(sss);这句后加上:
staffService.delete(30); //(sql语句如下)
这句,则三张表中的数据都是和期望的一样,该删的删了,保存的数据 三张表都有了。但是,为什么?????//*********//
(好像执行点什么其他的操作都可以使 保存实体操作 ,对应的 三张表都有数据)
//-------------2013-10-30 08:22:36,801 DEBUG SQL:111 - insert into t_staff (nickName, password, type, username) values (?, ?, ?, ?)
2013-10-30 08:22:36,879 DEBUG SQL:111 - insert into t_staffModule (nameCN, nameSN) values (?, ?)
2013-10-30 08:22:36,879 DEBUG SQL:111 - insert into t_staffModule (nameCN, nameSN) values (?, ?)
2013-10-30 08:22:36,879 DEBUG SQL:111 - insert into t_staffModule (nameCN, nameSN) values (?, ?)2013-10-30 08:22:36,910 DEBUG SQL:111 - select staff0_.staffID as staffID13_0_, staff0_.nickName as nickName13_0_, staff0_.password as password13_0_, staff0_.type as type13_0_, staff0_.username as username13_0_ from t_staff staff0_ where staff0_.staffID=?
2013-10-30 08:22:36,910 DEBUG SQL:111 - select staffmodul0_.staffID as staffID13_1_, staffmodul0_.moduleID as moduleID1_, staffmodul1_.moduleID as moduleID14_0_, staffmodul1_.nameCN as nameCN14_0_, staffmodul1_.nameSN as nameSN14_0_ from t_staff2module staffmodul0_ inner join t_staffModule staffmodul1_ on staffmodul0_.moduleID=staffmodul1_.moduleID where staffmodul0_.staffID=?
2013-10-30 08:22:36,910 DEBUG SQL:111 - select staffs0_.moduleID as moduleID14_1_, staffs0_.staffID as staffID1_, staff1_.staffID as staffID13_0_, staff1_.nickName as nickName13_0_, staff1_.password as password13_0_, staff1_.type as type13_0_, staff1_.username as username13_0_ from t_staff2module staffs0_ inner join t_staff staff1_ on staffs0_.staffID=staff1_.staffID where staffs0_.moduleID=?
2013-10-30 08:22:36,926 DEBUG SQL:111 - select staffs0_.moduleID as moduleID14_1_, staffs0_.staffID as staffID1_, staff1_.staffID as staffID13_0_, staff1_.nickName as nickName13_0_, staff1_.password as password13_0_, staff1_.type as type13_0_, staff1_.username as username13_0_ from t_staff2module staffs0_ inner join t_staff staff1_ on staffs0_.staffID=staff1_.staffID where staffs0_.moduleID=?
2013-10-30 08:22:36,926 DEBUG SQL:111 - select staffs0_.moduleID as moduleID14_1_, staffs0_.staffID as staffID1_, staff1_.staffID as staffID13_0_, staff1_.nickName as nickName13_0_, staff1_.password as password13_0_, staff1_.type as type13_0_, staff1_.username as username13_0_ from t_staff2module staffs0_ inner join t_staff staff1_ on staffs0_.staffID=staff1_.staffID where staffs0_.moduleID=?
2013-10-30 08:22:36,926 DEBUG SQL:111 - delete from t_staff2module where staffID=?
2013-10-30 08:22:36,941 DEBUG SQL:111 - insert into t_staff2module (staffID, moduleID) values (?, ?)
2013-10-30 08:22:36,941 DEBUG SQL:111 - insert into t_staff2module (staffID, moduleID) values (?, ?)
2013-10-30 08:22:36,941 DEBUG SQL:111 - insert into t_staff2module (staffID, moduleID) values (?, ?)
2013-10-30 08:22:36,941 DEBUG SQL:111 - delete from t_staffModule where moduleID=?
2013-10-30 08:22:36,941 DEBUG SQL:111 - delete from t_staffModule where moduleID=?
2013-10-30 08:22:36,941 DEBUG SQL:111 - delete from t_staffModule where moduleID=?
2013-10-30 08:22:36,957 DEBUG SQL:111 - delete from t_staff where staffID=?
解决方案 »
- Java调用Sql Server 2000的bcp导入导出数据库的问题。
- 关于前台属性
- Struts 超困惑问题,非一般人可解决
- 看看我的Hibernate错误信息,帮我分析一下吧?
- svn无法checkout呀
- 关于用xdoclet生成hibernate的mapping文件和生成数据表问题.......
- 今天初装WebLogic8.1,问一个简单的问题!!
- 学完JSP后,升级到XML呢,还是Struts?
- ■■高分请教:对表的更新、保存操作考虑到并发时同时操作情况了吗?如何处理呢,■■
- 在EJB-JAR.XML中,env-entry的作用什么呢????
- maven pom.xml配置文件错误
- 求助求助~
培训结束之后唯一用到hibernate的地方就是在论坛上和网友们一起找错误。。
只是看你的描述
感觉你save之后是不是应该commit一下?
你没有commit,后来delete的时候是不是执行之前默认给你commit了,所以结果又成了正确的了。
你把问题发到百度hibernate贴吧里,那里应该可以解决。
注解里也同样 不能两边都设置mappedBy