Livre-se do SQL: uma introdução ao Hibernate  XML
Índice dos Fóruns » Artigos e Tutoriais
Autor Mensagem
urubatan
Moderador
[Avatar]

Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline

faz os teus mapeamentos novamente, um objeto tem que apontar para o outro objeto e não para o ID dele.

tu vai ver que desta forma fica muito mais fácil

[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
[WWW]
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline

urubatan wrote:faz os teus mapeamentos novamente, um objeto tem que apontar para o outro objeto e não para o ID dele.

tu vai ver que desta forma fica muito mais fácil


´Rodrigo,

É isso que estou fazendo, o id do mapping Produto_fornecedor esta apontando para Produto_fornecedorPK.class que é um bean que tem como atributo um objeto do tipo Produto e outro do tipo Fornecedor.

O problema esta em como escrever a HQL, eu não sei

Veja o meu mapping do relacionamento:

<hibernate-mapping>
<class name="com.siq.DBTest.data.model.SiqGrpPapeis" table="SIQ_GRP_PAPEIS">
<composite-id name="id" class="com.siq.DBTest.data.model.SiqGrpPapeisPK">
<key-many-to-one name="SiqGrp" column="idGrp" class="com.siq.DBTest.data.model.SiqGrp" />
<key-many-to-one name="SiqPapeis" column="idPapeis" class="com.siq.DBTest.data.model.SiqPapeis" />
</composite-id>
</class>
</hibernate-mapping>
[Email] [MSN]
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline

foi mal, mandei um mapping de um relacionamento entre grupos e papeis do grupo.

Mas a dúvida é a mesma que a para o caso de produtos x fornecedores.


Como montar a consulta HQL !!!!!!!!!!
[Email] [MSN]
MarcioLima
Smalltalk

Membro desde: 15/07/2004 10:54:06
Mensagens: 4
Offline

Parabéns ao GUJ. Muito legal esse site. Gostei muito do conteúdo.

Bem, tenho um problema com o Hibernate/Struts/JSP/MySql. Consegui fazê-lo funcionar mas não da forma que eu gostaria.

Estou instanciando o Bean do Hibernate da seguinte forma em uma JSP:

<%
List itemList = ItemService.getInstance().getItemList();
request.setAttribute("items", itemList);
%>

Com isso eu obtenho a conexão com o banco e todos os itens da tabela e gravo em uma Session (eu acho, não tenho certeza).
Para mostrar a tabela inteira eu estou fazendo da seguinte forma:

<logic:iterate id="element" name="items" scope="request" type="app.Item" >
<tr>
<td><bean:write name="element" property="id" /></td>
<td><bean:write name="element" property="nrprocesso" /></td>
<td><bean:write name="element" property="name" /></td>
<td><bean:write name="element" property="description" /></td>
</tr>

O problema é que eu gostaria de mostrar somente os itens do usuário que está logado. Os dados do usuário que está logado eu preservo em um Bean de Seção mas não sei como passar esses dados para o hibernate. Eu teria que, no momento da criação da lista, passar uma chave para o Hibernate selecionar o que eu quero. Selecionar os daque eu quero não é problema, o problema é, a apartir do JSP, passar parametros para o Hibernate.

Agradeço muito qualquer ajuda.
[Email]
cezarsg
JavaChild

Membro desde: 28/04/2003 09:57:38
Mensagens: 129
Localização: curitiba
Offline

Pessoal, estou tentando executar o exemplo do tutorial mas sempre obtenho este erro

java.lang.UnsupportedOperationException: The user must supply a JDBC connection
at net.sf.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:32)
at net.sf.hibernate.impl.BatcherImpl.openConnection(BatcherImpl.java:286)
at net.sf.hibernate.impl.SessionImpl.connect(SessionImpl.java:3326)
at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3286)
at net.sf.hibernate.impl.BatcherImpl.prepareStatement(BatcherImpl.java:61)
at net.sf.hibernate.impl.BatcherImpl.prepareStatement(BatcherImpl.java:56)
at net.sf.hibernate.impl.BatcherImpl.prepareBatchStatement(BatcherImpl.java:109)
at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:460)
at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:442)
at net.sf.hibernate.impl.ScheduledInsertion.execute(ScheduledInsertion.java:29)
at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:241
at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2371)
at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2240)
at src.AmigoDAO.insert(AmigoDAO.java:22)
at src.App.main(App.java:19)



Este é o hibernate.cfg.xml:



Este é o meu código que insere o amigo:
Eduardo Bregaida
Moderador
[Avatar]
Membro desde: 13/11/2003 14:11:35
Mensagens: 2416
Localização: São Caetano do Sul - SP
Offline

Daniel vlw por ter me dado a introdução a Hibernate no Conexão java, quebrou mesmo um galhão aki...

Blog - Java Anywhere
@bregaida - Twitter
Flickr - Fotos
Cursos de Java?

"Você poderia me dizer, por favor, qual caminho eu devo seguir?"
"Isto depende muito de onde você deseja chegar."
-Lewis Carroll, Alice no País das Maravilhas
[Email] [WWW] [MSN]
Armitage
JavaTeenager
[Avatar]

Membro desde: 19/08/2003 15:39:37
Mensagens: 191
Localização: São Paulo
Offline

10 x 0 para o hibernate...

Estou desde ontem tentando fazer o hibernate funcionar aqui... primeiro um monte de erro sem sentido que sumiram sei lá por que... agora um erro tosco sem noção... ele não acha o jdbc driver do mysql... sendo que ESTA no classpath só que se eu mudo para o DB2 funciona, detalhe os dois drives estão na mesma pasta...

Da para entender isso?

Aproveitando... como lido com chave composta?

Assim estou tentando usar o hibernate pela primeira vez e até agora só vi exemplo com chave primeira simples...

;o/

"Deram-me um dia de nascimento, e agendaram-me um para morrer. Entre estes o que restou, sou eu"

Status MSN:
Status ICQ(trabalho):
Status ICQ(casa):
[WWW] aim icon [MSN] [ICQ]
TedLoprao
Virtual Machine Man
[Avatar]

Membro desde: 09/05/2003 00:32:03
Mensagens: 607
Offline

De uma olhada em <composite-id> no reference do hibernate...

Mas pessoalmente, recomendaria o uso de apenas chaves simples... É claro que as vezes nós não podemos fazer isso devido ao banco ser legado ou algo parecido!

Qualquer duvida com o composite-id posta aí!!

Fallow

Rodrigo Klein
----------------------------------------------------
Java is the best
Armitage
JavaTeenager
[Avatar]

Membro desde: 19/08/2003 15:39:37
Mensagens: 191
Localização: São Paulo
Offline

Ahhhhh vou ter um ataque de nervos... cada hora uma coisa nova...



DB2 = 7.2


O que isso significa?

This message was edited 1 time. Last update was at 11/01/2005 20:12:08


"Deram-me um dia de nascimento, e agendaram-me um para morrer. Entre estes o que restou, sou eu"

Status MSN:
Status ICQ(trabalho):
Status ICQ(casa):
[WWW] aim icon [MSN] [ICQ]
Armitage
JavaTeenager
[Avatar]

Membro desde: 19/08/2003 15:39:37
Mensagens: 191
Localização: São Paulo
Offline

Depois do esmagador silêncio de pertubar o Paulo, o Caio, o Chico Bento e muitos outros via ICQ consegui resolver o problema ;D

Vamos a solução...

No google encontrei apenas duas referencias ao problema sendo que uma dizia o mesmo que o Paulo que algum jar estava desatualizado como funcionou usando o mysql logo o driver problematico seria do DB2... a versão do DB2 que estou usando é a 7.2 e por padrão vem do o driver para JDBC1 (coisa que eu não fazia idéia), sendo assim teria que atualizar o driver... bem... não achei em lugar nenhum onde faze-lo nem mesmo no site da IBM mais achei uma instrução ridicula de tão simples....

To enable JDBC 2.0 use on Windows NT systems:

Run the following batch file:
C:/SQLLIB/java12/usejdbc2.bat
(In some cases, the file is named jdbc20.exe.)

Stop WebSphere Application Server (if it is running) and start it again.

Pronto fiz isso e esta funcionando ;o)

Resumindo pelo que li este erro indica que o driver esta usando uma versão antiga do jdbc.

"Deram-me um dia de nascimento, e agendaram-me um para morrer. Entre estes o que restou, sou eu"

Status MSN:
Status ICQ(trabalho):
Status ICQ(casa):
[WWW] aim icon [MSN] [ICQ]
joseneuza
Debugger
[Avatar]

Membro desde: 23/12/2003 15:26:09
Mensagens: 60
Offline

Estou tentando rodar o exemplo do Hibernate do tutorial e não consigo.

esta dando um erro na seguinte linha de comando:

bruce-
Smalltalk

Membro desde: 01/04/2004 17:53:38
Mensagens: 4
Offline

Alguem ai afim de me mostrar um mapeamento de uma relacao ternaria usando xdoclet ? No meu caso , tenho minhas tabelas fornecedor, produto, loja e suas respectivas classes. Desde ja agradeco qm tiver afim de quebrar esse galhao pra mim
[MSN] [ICQ]
Eduardo Bregaida
Moderador
[Avatar]
Membro desde: 13/11/2003 14:11:35
Mensagens: 2416
Localização: São Caetano do Sul - SP
Offline

Po tbm n consigo rodar o exemplo...

Blog - Java Anywhere
@bregaida - Twitter
Flickr - Fotos
Cursos de Java?

"Você poderia me dizer, por favor, qual caminho eu devo seguir?"
"Isto depende muito de onde você deseja chegar."
-Lewis Carroll, Alice no País das Maravilhas
[Email] [WWW] [MSN]
fzampa
Virtual Machine Man
[Avatar]

Membro desde: 05/11/2004 18:22:45
Mensagens: 615
Localização: Belo Horizonte
Offline

Aaahhhh, o link do artigo tá quebrado!!!!!

Tem algum outro link????


[MSN]
back
GUJ Ranger
[Avatar]

Membro desde: 20/05/2003 08:43:42
Mensagens: 763
Localização: Milano / Italia
Offline

Daniel Quirino Oliveira wrote:Hmmm... problema interessante. Isso parece ser um bug do hibernate (ou do driver do MySQL, quem sabe?). Tente contornar a situação adicionando o comando "session.connection().commit();" após cada "session.close();", ok?



Se mesmo assim não funcionar, tente usar o Hibernate com outro banco de dados (ou outro driver para o MySQL). Se o problema persistir, envie o bug ao pessoal do Hibernate, ok? A URL é: http://hibernate.bluemars.net/20.html

Hasta la vista


Meio tarde pra trazer isso a tona, mas estava com esse problema de o simples session.flush(); session.close() não estarem commitando com o MySQL, dei uma fuçada e acabei verificando que esse problema está relacionado com o tipo de tabela do mysql. As tabelas que não suportam transações precisam do treço de código abaixo para serem comitadas.


Para as que suportam o código do tutorial deve funcionar.... alguém teste, se tiver interesse e tempo livre.

Fonte:

No transactions with MyISAM tables, only with InnoDB tables (consider changing the default for your databases).

http://www.hibernate.org/80.html
[MSN]
 
Índice dos Fóruns » Artigos e Tutoriais
Ir para:   
Powered by JForum 2.1.8 © JForum Team