Я обычно вижу примеры сущностей, которые сохраняются в сети с использованием 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. Я обычно добавляю отображение между элементами формы
и мой управляемый боб.
Во время операции добавления в веб-интерфейсе обычно отображается раскрывающийся список отделов.
при добавлении нового профессора.
<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);
Но я думаю, что это не то, как данные представляются и собираются в веб-приложении.