Salvar array de String[] no BD com Hibernate!  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
andre_bento
JavaGuru

Membro desde: 07/06/2007 12:56:10
Mensagens: 215
Offline

Olá amigos, acabei de fechar um tópico relacionado a minha JTable onde pegava os dados.
É o seguinte, eu peguei em minha table um campo onde armazenei em um array de Strings.
No meu caso o campo Itens Retirados eu guardei em um Strin[] itensRetirados.
Até ae tudo beleza... setei meu list<MeuModelo> e tudo legal.
Mas como eu faço para salvar no BD um array de Strings com o Hibernate.
Ele está dando erro no mapeamento dizendo que é impossível fazer o cast de String para String[].

Os amigos tem alguma idéia de como eu posso fazer, estive olhando aqui no fórum e alguns amigos não aconselham gravar arrays de String no BD... qual seria a outra alternativa?

Modelo.hbm.xml


Método que enche a list retornando um Object (está em meu modelo dá Table)


Tela onde encho o array:


Um forte abraço a todos!
alex.brito
JavaChild

Membro desde: 26/05/2009 07:39:01
Mensagens: 113
Offline

Opa, bom dia Andre.

Então cara, essa sua coluna itensretirados está como no banco ?? varchar ??

Tipo, para mapear um array, você deveria utilizar a tag <array> dentro do seu hbm.xml. Mas se não me engano, isso representa um relacionamento one-to-many ou many-to-one. Não sei se é o seu caso.

Se voce tem um array te itens retirados e deseja salvar em uma única coluna, acho que você deve pensar em utilizar uma string com um delimitador

Ex. Item1;Item2;Item3 - Tudo isso é uma unica String.

Depois você poderia transforma-la em array novamente, separando pelo delimitador ";".

Não sei se é isso. Mas em todos os casos, se você quiser tentar utilizar a tag <array> dá uma olhada http://helpdesk.objects.com.au/java/how-to-map-an-array-using-hibernate


[]'s
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

Nunca precisei fazer, mas uma rapida procurada no google eu achei http://www.java2s.com/Code/Java/Hibernate/CollectionMappingArray.htm

Porém, ao invés de gravar tudo como array de String em um campo da tabela, porque não usar o método tradicional, que é criar uma segunda tabela e fazer um relacionamento ManyToOne. Usando hibernate isso vai ficar bastante simples de fazer

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
alissonvla
GUJ Master

Membro desde: 17/04/2006 15:29:07
Mensagens: 1491
Offline

cara,

não faz desse jeito, crie uma tabela para esse seu caso, vai ficar dentro da forma normal de BD e alem disso, se vc precisar realizar alguma consulta para em cima desse dados do jeito que vc ta querendo nao vai ter jeito.

t+
andre_bento
JavaGuru

Membro desde: 07/06/2007 12:56:10
Mensagens: 215
Offline

Olá amigos.
Eu estou querendo fazer desse jeito mesmo... mas estou tendo dificuldades.
Tipo...


Eu configuerei desse jeito:



E aqui:


Dessa maneira:


Então minha classe SaidaPatrimonio.hbm.xml ficou assim:



Mas quando tento apenas abrir minha tela ele dá erro dizendo: could not parse mapping document from resource Mode/SaidaPatrimonio.hbm.xml

O que posso estar fazendo de errado??
Me ajuuudem!

alissonvla
GUJ Master

Membro desde: 17/04/2006 15:29:07
Mensagens: 1491
Offline

cara,

vc ja pensou qdo vc for fazer alguma consulta com esses dados?

t+
andre_bento
JavaGuru

Membro desde: 07/06/2007 12:56:10
Mensagens: 215
Offline

Olá amigo.
Estou pensando cara, por isso to precisando da ajuda de vcs...rsrrs
Não tenho muitoa experiência com o hibernate, por isso que aprender com os amigos qual a melhor maneira pra depois não ter que ficar alterando tudo entende?
Como os amigos fariam nesse caso?
alissonvla
GUJ Master

Membro desde: 17/04/2006 15:29:07
Mensagens: 1491
Offline

cara,

isso nao é problema de hibernate, isso vai ser problema de relacionamento do seu banco. como eu te disse seria melhor vc criar uma tabela para esse caso.

t+
andre_bento
JavaGuru

Membro desde: 07/06/2007 12:56:10
Mensagens: 215
Offline

Olá alissonvla.
Criei essa tabela cara, mas não estou conseguindo obter êxito no relacionamento, entende?
E também não imagino como ficaria o insert nela... Eu criei a tabela com os campos id e itens...
fiz o que vc falou mas a partir dae preciso de uma luz para saber como proceder!.
Obrigado pela força cara!
alissonvla
GUJ Master

Membro desde: 17/04/2006 15:29:07
Mensagens: 1491
Offline

cara,

vc ta dando manutenção nesse seu projeto ou ta começando?
pq se vc tiver começando do zero, utilize anotação ao inves de xml, é mais simples de trabalhar.

t+
Two_
JavaGuru

Membro desde: 03/12/2009 18:01:53
Mensagens: 240
Localização: Belo Horizonte, MG
Offline

alissonvla wrote:cara,

vc ta dando manutenção nesse seu projeto ou ta começando?
pq se vc tiver começando do zero, utilize anotação ao inves de xml, é mais simples de trabalhar.

t+


Cara eu tenho um projeto feito todo em hibernate annotations, e se fosse começar hoje do zero ele de novo ia fazer tudo em XML, primeiro por achar muito mais coisa em XML do que annotations
segundo pela manutenção além de certas coisas só ser possível em XML, pelo menos foi o que descobrir quando precisava de alguma coisas mais complexa, usando annotations parecia gambiarra.
[Email]
alissonvla
GUJ Master

Membro desde: 17/04/2006 15:29:07
Mensagens: 1491
Offline

cara,

acho que isso que vc disse ser um pouco improvavel, vc conseguir resolver algum problema com xml e não com anotação.
mas gosto é gosto ne.

t+
alex.brito
JavaChild

Membro desde: 26/05/2009 07:39:01
Mensagens: 113
Offline

andre_bento wrote:Olá amigos.
Eu estou querendo fazer desse jeito mesmo... mas estou tendo dificuldades.
Tipo...


Eu configuerei desse jeito:



E aqui:


Dessa maneira:


Então minha classe SaidaPatrimonio.hbm.xml ficou assim:



Mas quando tento apenas abrir minha tela ele dá erro dizendo: could not parse mapping document from resource Mode/SaidaPatrimonio.hbm.xml

O que posso estar fazendo de errado??
Me ajuuudem!




Então,


<class name="ItensRetirados" lazy="true" table="itensretirados">
<id name="id"> ........


Acho que você precisa colocar o nome do pacote, igual ao saidaPatrimonio .... "Model.ItensRetirados.

e no array ...


<array name="itens" cascade="all" fetch="join">
<key column="id"/>
<list-index column="id"/>
<one-to-many class="SaidaPatrimonio"/>
</array>


O one-to-many e para Model.ItensRetirados.

Acho que é isso ...


[]'s
Two_
JavaGuru

Membro desde: 03/12/2009 18:01:53
Mensagens: 240
Localização: Belo Horizonte, MG
Offline

alissonvla
EU gosto de usar annotations, mais em pequenos projetos, coisa que me gere menos de 100 pojos...
Acima disso vou de XML mesmo
[Email]
andre_bento
JavaGuru

Membro desde: 07/06/2007 12:56:10
Mensagens: 215
Offline

Olá amigos.
Pessoal fiz o que o amigo alex.brito me falou e ele parou o erro... até ae beleza...
Só que agora eu preciso mandar esse relacionamento que fiz no hibernate para o banco como eu faço?
E segundo, como faço para dar o insert nessa tabela itensRetirados...
Realmente não estou imaginando como...
O relacionamento é 1 Saída para N itens retirados...
Obrigado amigos
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team