【发布时间】:2019-08-21 10:29:50
【问题描述】:
有两个实体
1.Locker(child)(@OneToMany(mappedBy))
2.Subjects(父母/所有者)(@ManyToOne)
通过邮递员,我传递了 Locker 实体 ID,通过它我正在访问主题并尝试更新特定的东西,但我收到错误,我什至没有创建新的,我只是在更新它,一切都在工作插入除本例外删除
@Entity
public class Locker {
@Id
@GeneratedValue
private int id;
private String lockerno;
@OneToMany(mappedBy="lockey",cascade= {CascadeType.ALL})
private List<Subjects> subjects;
//getters andsetter and constructors
第二个实体
@Entity
public class Subjects {
@Id
@GeneratedValue
private int id;
private String subname;
private String marks;
@ManyToOne(cascade= {CascadeType.MERGE,CascadeType.REMOVE,CascadeType.REFRESH})
private Locker lockey;
//getters and setter constructors
现在是存储库接口
public interface LockerRepo extends CrudRepository<Locker,Integer>{
}
public interface SubjectsRepo2 extends CrudRepository<Subjects,Integer>{
}
现在是控制器方法
public String m25(@RequestParam("id") int id) throws Exception {
Optional<Locker> lock=lockerrepo.findById(id);
Locker ll=lock.get();
ArrayList<Subjects> sub=new ArrayList<> (ll.getSubjects());
Iterator itr=sub.iterator();
while (itr.hasNext()) {
Subjects sub1=(Subjects) itr.next();
System.out.println(sub1.getId());
if(sub1.getId()==3) {
sub1.setMarks("91");
subrepo.save(sub1);
}
}
return "updation done man";
}
我正在传递数据库中已经存在的 id,但它仍然给出此错误
java.util.ConcurrentModificationException: null
堆栈跟踪
java.util.ConcurrentModificationException: null
at java.util.ArrayList$Itr.checkForComodification(Unknown Source) ~[na:1.8.0_181]
at java.util.ArrayList$Itr.next(Unknown Source) ~[na:1.8.0_181]
at org.hibernate.collection.internal.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:850) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at com.example.demo.controller.MainController.m23(MainController.java:86) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_181]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_181]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_181]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
【问题讨论】:
-
堆栈跟踪显示
m23。您提供了m25。 -
是的,相同的代码和不同的方法名称相同
标签: hibernate spring-boot jpa spring-data-jpa