일반적으로 JPA를 사용하여 그물에 유지되는 엔티티의 예를 볼 수 있지만 하나의 엔티티 만 포함합니다. 그러나 관계가 관련되어 있다면 이해할 수 없습니다.관계가있는 지속적인 요소에 대한 질문
예를 들어, 저는 교수와 부서간에 많은 매핑을했습니다.
@Entity
public class Professor {
@ManyToOne
@JoinColumn(name="DEPT_ID")
private Department department;
}
@Entity
public class Department {
//normal getters and setters
private int id;
private String name;
}
이제 내 JSF 페이지에 .. 난 보통 내 폼 요소 내 관리 빈 사이에 매핑을 추가합니다.
추가 작업 중에 웹 UI에서 일반적으로 새 교수를 추가 할 때 부서의 드롭 다운 상자가 표시됩니다.
<h:inputText value="#{myBean.currentProf.name}"/>
.
. /* other mappings here */
.
<h:selectOneMenu value="#{myBean.currentProf.department.name}>
<f:selectItems value="#{myBean.allDepartments}"/>
</h:selectOneMenu>
<h:commandButton value="Add" actionListener="#{myBean.handleSave}" />
자, 내 질문은 : 먼저 부서를 얻을 그것을 지속하기 전에 내 현재 교수의 속성을 설정하기위한 요구 사항인가? 이 때문에 내 경우에는, 난 이미 난 그냥 명확성을 위해 여기에 내 비즈니스 서비스를 보여 부서 아이디 ..
@ManagedBean
public class MyBean{
public Professor currentProf;
public BusinessService service;
public String handleSave(){
Department dept = service.findDepartment(currentProf.getDepartment().getName());
currentProf.setDepartment(dept);
service.createProfessor(currentProf);
}
public List<SelectItem> getAllDepartments(){
return service.getAllDepartments();
}
}
을 부서 이름을 설정하지만하지 않았습니다. 그물에
public class BusinessService {
protected EntityManager em;
public Professor createProfessor(Professor prof) {
em.persist(prof);
return prof;
}
}
많은 예는 이와 같은 거친 예를 보여줍니다
Department dept = new Department();
dept.setId(1);
dept.setName("Finance");
Prof newProf = new Professor();
newProf.setDepartment(dept);
service.createProfessor(newProf);
하지만이 데이터 제시와 웹 응용 프로그램에서 수집되지 방법이라고 생각합니다.
안녕하세요, 저는 이미 등록 된 부서를 그대로 유지하고 있지 않습니다. 방금 DB에서 Department를 가져와야한다면 내 Professor Class로 설정해야합니다. 답장을 보내 주셔서 감사합니다. –
이미 분리 된 엔티티 개체 부서가있는 경우 Department를 Professor로 설정하고 Persistence Context로 병합하면됩니다. 나는 오늘 저녁에 내 대답을 편집하여 명확히 할 것이다. – sayYeah