hibernate_manyToMany,设置了“CascadeType.PERSIST”,无法级联存储。问题很简单,进来看看啊~ hibernatemanyToManyAnnotationcascade 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那就把除了CascadeType.DELETE之外的都写上…… private Set<Course> courses = new HashSet<Course>();private Set<Student> students = new HashSet<Student>();试试看我也是猜的 s1.setCourses(new HashSet<Course>()); 你关联了个空的 怎么会级联呢 既然是student为关系维护段,为什么在你的课程又有这么一段code 呢c2.setStudents(new HashSet<Student>());?这样写:Student s1 = new Student(); ..... Course c2= new Course();...Course c2= new Course();...HashSet set = new HashSet<Course>()set.add... s1.setCourses(set); 你都没把student往set里面放,怎么级联保存new Course().getStudents.add(new Student()) 大哥,你没有认真读代码啊。我后面不是写了么:s1.getCourses().add(c1); s1.getCourses().add(c2);这样写集合还是空的? 大哥,你没有认真读代码啊。 我后面不是写了么: s1.getCourses().add(c1); s1.getCourses().add(c2); 这不放进去了么~ 貌似用JPA的CascadeType注解对save方法无效。可以用Hibernate的注解 @Cascade(value = org.hibernate.annotations.CascadeType.SAVE_UPDATE) 问题解决了吗 我遇到了 楼主同样的问题?希望级联更新和添加 但是不希望级联删除@ManyToMany(cascade={CascadeType.PERSIST,CascadeType.REFRESH},fetch=FetchType.EAGER)这样配死活添加不上 同遇到问题,完美解决了,留下脚印希望能给后者帮助:解:@OneToMany(cascade = {CascadeType.PERSIST}),发现级联不起作用,如果更改为Hibernate的注解 @Cascade({org.hibernate.annotations.CascadeType.PERSIST}),依然不起作用,但改为 @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})之后,注解生效。原因如下:如果使用javax.persistence.*里面的注解,只有调用相应的方法才生效,如PERSIST,只有调用persist方法才生效,Hibernate的注解也是如此。查看我的代码,我保存对象用的是save方法,因此要用SAVE_UPDATE,级联才能生效。2、使用方法如果在ManyToOne的一端使用,如下(Vote类):@ManyToOne @Cascade({CascadeType.SAVE_UPDATE}) private VoteSubject voteSubject;那么在保存该Vote对象时,如果对象的voteSubject属性是一个新对象,则会在保存Vote对象时,顺便把voteSubject对象保存;反之,如果one2Many的一端如果没有设置关联,则one的一端保存时,不会保存集合中的新对象。也就是说在哪个对象中的相应属性中设置了级联,那么在操作该对象时级联生效。如果想让有关系的双方同时级联生效,那么级联要在两个对象中同时设置。 richfaces 环境配置 spring ibatis atomikos struts2两个表直接的关联 登陆后启动tomcat为什么一关闭登陆,tomcat自动会关掉 Spring 高手进来!关于jdbcTemplate的一个奇怪问题。 文件上传下载(EXCEL) 连接池问题! 问各位前被一个小问题,为什么我一部署就会有这个提示 solrcloud+zookeeper中solr core配置文件同步问题 巴格达的太阳快要落山了,底格里斯河畔静悄悄, 擦起我心爱的AK47,唱起那动人的歌谣!! java表格读取数据库问题 【推荐】提高开发效率的eclipse小插件
private Set<Student> students = new HashSet<Student>();试试看我也是猜的
Student s1 = new Student();
.....
Course c2= new Course();
...
Course c2= new Course();
...
HashSet set = new HashSet<Course>()
set.add... s1.setCourses(set);
大哥,你没有认真读代码啊。
我后面不是写了么:
s1.getCourses().add(c1);
s1.getCourses().add(c2);这样写集合还是空的?
大哥,你没有认真读代码啊。
我后面不是写了么:
s1.getCourses().add(c1);
s1.getCourses().add(c2);
这不放进去了么~
希望级联更新和添加 但是不希望级联删除
@ManyToMany(cascade={CascadeType.PERSIST,CascadeType.REFRESH},fetch=FetchType.EAGER)
这样配死活添加不上
解:@OneToMany(cascade = {CascadeType.PERSIST}),发现级联不起作用,如果更改为Hibernate的注解 @Cascade({org.hibernate.annotations.CascadeType.PERSIST}),依然不起作用,但改为 @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})之后,注解生效。
原因如下:
如果使用javax.persistence.*里面的注解,只有调用相应的方法才生效,如PERSIST,只有调用persist方法才生效,Hibernate的注解也是如此。
查看我的代码,我保存对象用的是save方法,因此要用SAVE_UPDATE,级联才能生效。2、使用方法
如果在ManyToOne的一端使用,如下(Vote类):
@ManyToOne
@Cascade({CascadeType.SAVE_UPDATE})
private VoteSubject voteSubject;那么在保存该Vote对象时,如果对象的voteSubject属性是一个新对象,则会在保存Vote对象时,顺便把voteSubject对象保存;反之,如果one2Many的一端如果没有设置关联,则one的一端保存时,不会保存集合中的新对象。也就是说在哪个对象中的相应属性中设置了级联,那么在操作该对象时级联生效。
如果想让有关系的双方同时级联生效,那么级联要在两个对象中同时设置。