Ola, estou tentando salvar um registro com relação ManyToOne (sou iniciante), porém o formulário é retornado da validação apresentando erro typeMismatch no campo referenciado da outra tabela, se eu retiro a validação o registro principal salva, porém o campo da FK fica null, segue meu código:
Modelo de Empresa
@Entity
public class Empresa {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
@OneToMany(mappedBy = "empresa")
private List<Filial> filiais;
public Long getId() {return id;}
public String getNome() {return nome;}
public List<Filial> getFiliais() {return filiais;}
public void setId(Long id) {this.id = id;}
public void setNome(String nome) {this.nome = nome;}
public void setFiliais(List<Filial> filiais) {this.filiais = filiais;}
}
Modelo Filial
@Entity
public class Filial {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
@ManyToOne(fetch = FetchType.EAGER)
@PrimaryKeyJoinColumn
private Empresa empresa;
public Long getId() {return id;}
public String getNome() {return nome;}
public Empresa getEmpresa() {return empresa;}
public void setId(Long id) {this.id = id;}
public void setNome(String nome) {this.nome = nome;}
public void setEmpresa(Empresa empresa) {this.empresa = empresa;}
}
Meu controler:
@Controller
public class FilialController {
@Autowired
private FilialDAO filialDAO;
@Autowired
private EmpresaDAO empresaDAO;
....
}
@RequestMapping(value="/save", method = RequestMethod.POST)
public ModelAndView add(@Valid Filial filial, BindingResult result, RedirectAttributes redirectAttributes) {
if(result.hasErrors()) {
return add(filial);
}
filialDAO.save(filial);
redirectAttributes.addFlashAttribute("message", "Filial criada com Sucesso");
return new ModelAndView("redirect:/sys/filial/all");
}
Filial DAO:
@Repository
@Transactional
public class FilialDAO {
@PersistenceContext
private EntityManager manager;
public void save(Filial filial){
manager.persist(filial);
}
No meu jsp estou usando o campo assim:
<label class="labelForm" for="empresa">Empresa*</label>
<form:select path="filial.empresa" items="${empresas}" itemLabel="nome" itemValue="id" />
Ele carregas as empresas no select normal, acho que deve ser erro simples, mais não consigo identificar…