Estou tentando usar o Hibernate. Na hora de fazer a persistência de classes simples tá beleza, mas não estou conseguindo fazer quando tenho uma classe com uma collection:
2º
o relacionamento many-to-many so se usa quando se tem uma tabela intermediaria e vc quer retira-la no mappiamento.
como disse, é one-to-many, pois cada registro (1) aponta para varios (many)
3º
o Set funciona usando codigo hash e metodo equals quando acontecer colisao de codigo hash (interface Set nao aceita elementos repetidos)
aconcelho profundamente, voce redefenir os metodos “public int hashCode()” e “public boolean equals(Object o)”
para maior performace.
aconcelho profundamente, voce redefenir os metodos “public int hashCode()” e “public boolean equals(Object o)”
para maior performace.
Cuidado com isso… redefinir equals() e hashCode() nao garante ganhos de performance, e pode levar a bugs sérios se vc não souber direito o que tá fazendo, ainda mais quando vc está trabalhando com Sets, que dependem desses métodos pra fazer a classificação dos objetos
Rodrigo_Carvalho_Aul
Eu já tinha tentado com <array>, não tinha visto o <primitive-array>. mas dá erro de java.lang.NullPointerException.
Mas pra ser sincero, não sei pra que serve essa tag <index column/>, e sem ela dá o erro de java.lang.NullPointerException quando tento abrir a sessão do Hibernate.
O problema aqui é que vc está definindo o id “id” duas vezes - uma no objeto Empresa, e outra no array emails. Use um outro nome (sei lah, emails_id) que esse erro deve sumir
Rodrigo_Carvalho_Aul
Acho que não é isso não: mudei a classe e o mapeamento e continua dando o mesmo erro:
aconcelho profundamente, voce redefenir os metodos “public int hashCode()” e “public boolean equals(Object o)”
para maior performace.
Cuidado com isso… redefinir equals() e hashCode() nao garante ganhos de performance, e pode levar a bugs sérios se vc não souber direito o que tá fazendo, ainda mais quando vc está trabalhando com Sets, que dependem desses métodos pra fazer a classificação dos objetos ;)
o problema de voce deixar o equals e hashCode da classe Object, é que o hashCode retorna a posicao de memoria, e equals faz um simples " == "
o quer quer dizer, voce nao teste se a classe é equivalentemente iguais, apenas testa se sao a MESMA classe, logo classe com valores iguais vao entrar no Set sem problemas (o que pelo certo, nao devia), e varios metos de comparacao de objetos da classe Set deixam de funcionar.