Boa tarde!!
Bem tenho uma aplicação e preciso fazer um cadastro no banco de dados no seguinte estilo:
tenho varios códigos cadastrados, esses códigos servem para especificar o que cada unidade faz, posso cadastrar várias unidades também. Ao cadastrar uma unidade necessitaria selecionar os códigos com suas funções, uma unidade pode exercer mais de uma função e portanto possuir mais de um código, esse código pode ser usado por várias unidades. Pensei em criar uma lista de check box [interface web] e o usuario poder selecionar.
Imaginei então o relacionamento é n para n, vou usar @ManyToMany, porém pensei, Se o usuario selecionar 3 campos, como isso ficará no banco de dados? a coluna código vai possuir 3 valores diferentes? Bem mesmo assim resolvi tentar e implementei da seguinte forma:
//imports omitidos
@Entity
@Table(name = "unidades")
public class Unidade {
@Id
@GeneratedValue
private Integer id;
// Outros Atributos
@ManyToMany
private Cnai cnai;
// Getters e Setters
public void setCnai(Cnai cnai) {
this.cnai = cnai;
}
}
Cnai seria o nome do código que determina a função da unidade. Isso não funcionou, segue o erro que diz que estou fazendo uma tentativa Ilegal do ManyToMany:
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.ExceptionInInitializerError
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:839)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.ExceptionInInitializerError
br.com.e2s.dao.UsuarioDAO.<init>(UsuarioDAO.java:25)
br.com.e2s.controller.AcessoController.efetuaLogin(AcessoController.java:64)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:616)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
javax.persistence.PersistenceException: [PersistenceUnit: e2s] Unable to configure EntityManagerFactory
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:371)
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:55)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
br.com.e2s.infra.JPAUtil.<clinit>(JPAUtil.java:9)
br.com.e2s.dao.UsuarioDAO.<init>(UsuarioDAO.java:25)
br.com.e2s.controller.AcessoController.efetuaLogin(AcessoController.java:64)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:616)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements: br.com.e2s.modelo.Unidade.cnai
org.hibernate.cfg.annotations.CollectionBinder.getCollectionBinder(CollectionBinder.java:316)
org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1642)
org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:762)
org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:726)
org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:636)
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:359)
org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1206)
org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1449)
org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1077)
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:275)
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:359)
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:55)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
br.com.e2s.infra.JPAUtil.<clinit>(JPAUtil.java:9)
br.com.e2s.dao.UsuarioDAO.<init>(UsuarioDAO.java:25)
br.com.e2s.controller.AcessoController.efetuaLogin(AcessoController.java:64)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:616)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
Se alguém puder me ajudar, Muito Obrigado!