@EntitypublicclassLicaoimplementsSerializable{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)privateLongid;@Column(nullable=false)@NaoVazio(mensagem="Nome não pode ser vazio")privateStringcodigo;@Column(length=50,nullable=false)@NaoVazio(mensagem="Nome não pode ser vazio")privateStringdescricao;
acontece que ele não deixa eu adiciona a mesma lição para diferentes lançamentos, e eu preciso adicionar, pq a lição é algo avulso, como um rotulo só.
mas o hibernate cria isso aqui:
como impedir isso?
ps: não posso colocar um objeto LançamentoAula na lição e fazer redundancia, pois a lição não está ligada a apenas um lançamento, mas a varios.
pelo que visualizei em seu código você está usando o campo ID como se fosse uma chave primária digamos deste modo,
você poderia criar uma key somente para incrementar o array, e outro campo que seria sua ID principal.
estou pensando em modelo de banco, quando você precisa informar uma chave igual no banco ou você criaria uma chave com outro campo, para somente quando os dois campos forem iguais ele não deixar inserir… ou criaria um campo auto_increment somente para “estar ali”, e utilizaria outro campo qualquer…
Sou novo na área de JAVA, mas pelo que eu intendi seria mais ou menos isso.
Desculpas se não foi de grande utilidade
LucianoM86
Se um lançamento pode ter várias lições e uma lição pode estar associada a varios lançamentos, então você precisa de um relacionamento ManyToMany.
Se entendi direito, o “problema” está nessa declaração. Tu disse que uma lição é avulsa, e pode estar associada a mais de um lançamento certo?
Mude a sua declaração de @OneToMany para @ManyToMany, que permite que uma lição seja associada com vários lançamentos, assim como um lançamento possua varias lições.
Pelo que eu entendi, a lição pode estar em vários lançamentos, então a sua associação tem que ser de Muitos para Muitos.
Como está no código que você postou o relacionamento Um para Muitos, Uma lista de lançamento tem várias lições, se você fizer o caminho inverso, a Lição está apenas em uma lista de Lançamentos, por isso a CONSTRAINT gerada pelo Hibernate.
Se voce estiver gerando o banco pelo Hiberntate, que no caso acredito que seja pelo fato da linha apresentada, ao gerar a Tabela LancamentoAula, é gerado a chave estrangeira licoes_id, nome da entidade+udersource+id, e esta Linha CONSTRAINT, justamente para garantir a integridade do banco.