Hibernate 使用注释休眠多到任意删除
我在删除hibernate时遇到问题。我尝试了很多解决方案,但都不奏效。我想删除一个球队装备,但不删除锦标赛营地 所以,我有这个呃Hibernate 使用注释休眠多到任意删除,hibernate,annotations,many-to-many,Hibernate,Annotations,Many To Many,我在删除hibernate时遇到问题。我尝试了很多解决方案,但都不奏效。我想删除一个球队装备,但不删除锦标赛营地 所以,我有这个呃 Equipo --> Equipo_Campeonato <-- Campeonato id Equipo id nombre Campeonato nombre 所以我希望你能帮助我 更新 这是danny.lesnik告诉我的集成
Equipo --> Equipo_Campeonato <-- Campeonato
id Equipo id
nombre Campeonato nombre
所以我希望你能帮助我
更新
这是danny.lesnik告诉我的集成到我的代码中的代码
Campeonato campeonato = ControladorCampeonato.obtenCampeonato(idCampeonato);
//this is where I get the tournament
if(listaEquiposSeleccionados.length>0){
for(int i=0;i<listaEquiposSeleccionados.length;i++){
int idEquipo = listaEquiposSeleccionados[i].getId().intValue();
Equipo equipo= ControladorEquipo.obtenEquipo(idEquipo);
this is where I get the team.
try{
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
campeonato.getEquipos().remove(equipo);
session.update(campeonato);
session.getTransaction().commit();
listaEquiposAgregados.add(equipo);
}
我正在做一个网页,我可以选择一个比赛,我可以选择多个球队。我正在调试,异常就在session.updatecampeonato行中;尝试将集合与两个打开的会话关联是非法的。异常:s
解决方法
我认为问题在于在不同的时段装载Campeonato和Equipo。希望这能帮助其他有同样问题的人。如果我理解正确,你只想从一场特殊比赛中删除一支特殊球队。在您的情况下,删除它之间的连接就足够了
String equepoId = "xxx"; //
String campeonatoId = "yyy";
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Campeonato campeonato = (Campeonato)session.load(Campeonato.class,campeonatoId);
Equipo equipo = (Equipo)session.load(Equipo.Class,equapoId);
campeonato.getEquipos().remove(equipo);
session.update(campeonato);
session.getTransaction().commit();
你想做什么?问题是什么?很抱歉,我想删除一个球队装备而不删除锦标赛营地谢谢你的回答。所以我认为这可能有效,但我有一个问题。我必须凭身份证参加比赛,球队也必须凭身份证。所以hibernate抛出了一个异常,我无法对两个打开的会话进行操作。当我尝试将团队添加到tournamnet时,我遇到了这个问题,但我使用session.merge解决了这个问题。我会用不同的答案发布代码,这样你就可以看到它,也许可以帮我谢谢!嘿,谢谢!成功了!!!我在不同的会话中加载了Campeonato和Equipo,所以这可能就是问题所在。谢谢你不知道我有多谢你!好的,我接受答案。谢谢!如果没有问题,希望你能帮我解决另一个问题。现在我删除了一部电影,但是这个孩子有两个父母。如果你能帮我。如果你无论如何都不能感谢你对这个问题的帮助;
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
equipo.getCampeonatos().remove(campeonato);
campeonato.getEquipos().remove(equipo);
session.delete(equipo); // or session.merge(equipo); or session.saveOrUpdate(equipo);
session.getTransaction().commit();
Campeonato campeonato = ControladorCampeonato.obtenCampeonato(idCampeonato);
//this is where I get the tournament
if(listaEquiposSeleccionados.length>0){
for(int i=0;i<listaEquiposSeleccionados.length;i++){
int idEquipo = listaEquiposSeleccionados[i].getId().intValue();
Equipo equipo= ControladorEquipo.obtenEquipo(idEquipo);
this is where I get the team.
try{
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
campeonato.getEquipos().remove(equipo);
session.update(campeonato);
session.getTransaction().commit();
listaEquiposAgregados.add(equipo);
}
if(listaEquiposSeleccionados.length>0){
for(int i=0;i<listaEquiposSeleccionados.length;i++){
int idEquipo = listaEquiposSeleccionados[i].getId().intValue();
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Equipo equipo= (Equipo)session.load(Equipo.class, idEquipo);
Campeonato campeonato = (Campeonato)session.load(Campeonato.class, idCampeonato);
campeonato.getEquipos().remove(equipo);
session.update(campeonato);
session.getTransaction().commit();
session.close();
}
}
String equepoId = "xxx"; //
String campeonatoId = "yyy";
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Campeonato campeonato = (Campeonato)session.load(Campeonato.class,campeonatoId);
Equipo equipo = (Equipo)session.load(Equipo.Class,equapoId);
campeonato.getEquipos().remove(equipo);
session.update(campeonato);
session.getTransaction().commit();