0
미리 영어로 죄송합니다. 엔티티 목록에 요소를 추가하려고 시도했으며 은이 목록의 첫 번째 요소 만 유지합니다. 여기JPA 엔티티 목록에 요소를 추가하는 중 이상한 동작이 발생합니다. 첫 번째 요소 만 지속됩니다.
예 :이 데이터베이스에서 프로젝트와 기계가 (매핑 테이블을 통해) 제대로 연결되어 있지만, 테스트 테이블 만 기록 "테스트 0"을 포함하는 후
Project project = project_facade.find(1L);
Machine machine = machine_facade.find(1L);
for(int i=0;i<3;i++){
Test test = new Test();
test.setName("Test "+i);
test.setProject(project);
test.setMachine(machine);
project.getTestList().add(test);
machine.getTestList().add(test);
}
project.getMachineList().add(machine);
machine.getProjectList().add(project);
project_facade.edit(project);
(project_id 필드와 machine_id 필드가 올바른지).
는 첫 번째 요소에 대한 작업을 왜 이해가 안 ...
당신의 도움을 주셔서 감사합니다!
public void edit(T entity) {
getEntityManager().merge(entity);
}
:
프로젝트 엔티티 :
@Entity
public class Project implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Long id;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 45)
@Column(name = "name")
private String name;
@ManyToMany(mappedBy = "projectList", cascade = CascadeType.ALL)
private List<Machine> machineList;
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL *SOLUTION : ,fetch = FetchType.EAGER*)
private List<Test> testList;
//constructor, getters, setters
}
기계 법인 :
@Entity
public class Machine implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Long id;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 45)
@Column(name = "name")
private String name;
@JoinTable(name = "project_machine", joinColumns = {
@JoinColumn(name = "machine", referencedColumnName = "id")}, inverseJoinColumns = {
@JoinColumn(name = "project", referencedColumnName = "id")})
@ManyToMany
private List<Project> projectList;
@OneToMany(mappedBy = "machine",cascade = CascadeType.ALL)
private List<Test> testList;
//constructor, getters, setters
}
시험 엔티티 : 편집 방법이다
@Entity
public class Test implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Long id;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 64)
@Column(name = "name")
private String name;
@JoinColumn(name = "project", referencedColumnName = "id")
@ManyToOne(optional = false)
private Project project;
@JoinColumn(name = "machine", referencedColumnName = "id")
@ManyToOne(optional = false)
private Machine machine;
//constructor, getters, setters
}
그런 다음 내 모든 건물 외관은 AbstractFacade를 확장
'project_facade.edit()'의 구현뿐만 아니라 두 엔티티도 함께 보여주십시오. – crizzis
물론 getTestList()의 – Nep
구현을 완료 했습니까? 첫번째 요소가 실제로'Test 0'이어야합니까? – pirho