Не происходит сохранения студента, при выбранном универе, причем когда можно оставить поле univer пустым, все отлично сохраняет.
Рабочий пример на сервере
Создания таблиц:
Table: Students
Create Table: CREATE TABLE `Students` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`Name` varchar(255) DEFAULT NULL,
`Surname` varchar(255) DEFAULT NULL,
`age` int(11) NOT NULL,
`univer_univerId` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK8xg6lh2ugtycfqxvgopeykaoi` (`univer_univerId`),
CONSTRAINT `FK8xg6lh2ugtycfqxvgopeykaoi` FOREIGN KEY (`univer_univerId`) REFERENCES `Univers` (`univerId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
Table: Univers
Create Table: CREATE TABLE `Univers` (
`univerId` bigint(20) NOT NULL AUTO_INCREMENT,
`avg_age` double NOT NULL,
`label` varchar(255) DEFAULT NULL,
PRIMARY KEY (`univerId`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
Фрагмент index.xhtml
<p:outputLabel value="Univer"/>
<p:selectOneMenu value="#{studentBean.univer}" converter="univerConverter" >
<f:selectItems value="#{univerBean.allUnivers}" var="univer"
itemValue="#{univer}"
itemLabel="#{univer.label}"/>
</p:selectOneMenu>
</h:panelGrid>
</div>
<div class="ui-g-12">
<h:panelGrid columns="1" cellpadding="3">
<p:commandButton value="Create student" action="#{studentBean.addStudent}" ajax="false"
style="display: block;text-align: center"/>
Converter:
@FacesConverter(value = "univerConverter")
public class UniverConverter implements Converter {
@Override
public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String univerId) {
return UniverBin.getUniver(Long.valueOf(univerId));
}
@Override
public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object univer) {
return ((Univers)univer).getUniverId()+"";
}
}
Фрагмент CDI Beans Students:
public void addStudent(){
studentManagerBin.addStudent(surname, name, age, univer);
}
UniversBean:
public static Univers getUniver(long id){
for(Univers uni:univers){
if(id==uni.getUniverId()){
return uni;
}
}
return null;
}
Фрагмент EJB
public Students addStudent(String surname, String name, int age, Univers univer){
Students student = new Students();
student.setName(name);
student.setSurname(surname);
student.setAge(age);
student.setUniver(univer);
entityManager.persist(student);
return student;
}
Entity Students
private long id;
private String Surname;
private String Name;
private int age;
@ManyToOne
private Univers univer;
Entity Univers
private long univerId;
private String label;
private double avg_age;
@OneToMany(mappedBy="univer")
private List<Students> listOfStudents;
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости