<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "hibernate manyToMany annotations - cascade on relationship problem"]]></title>
		<link>http://www.guj.com.br/posts/list/7.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "hibernate manyToMany annotations - cascade on relationship problem"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>hibernate manyToMany annotations - cascade on relationship problem</title>
				<description><![CDATA[ [color=blue]edit: este primeiro problema foi resolvido na resposta abaixo, mas há outro problema muito maior![/color]<br /> <br /> Pessoal, como faz pra ensinar o hibernate a não utilizar identificadores maiores que 30 caracteres ?<br /> Olhem o log do sql que ele gerou pra um consulta na minha aplicação:<br /> <br /> [quote]INFO  [LoggerStream.write():152] - Hibernate: <br />     select<br />         relproduto0_.SAN_PRODUTO_PRODUTO_ID as SAN5_1_,<br />         relproduto0_.relProdutoCustoCollection_CUSTO_ID as relProdu6_1_,<br />         relproduto0_.relProdutoCustoCollection_PRODUTO_ID as relProdu7_1_,<br />         relproduto1_.CUSTO_ID as CUSTO4_19_0_,<br />         relproduto1_.PRODUTO_ID as PRODUTO3_19_0_,<br />         relproduto1_.QUANTIDADE as QUANTIDADE19_0_,<br />         relproduto1_.VISIVEL_BOOL as VISIVEL2_19_0_ <br />     from<br />         SAN_REL_PRODUTO_CUSTO relproduto0_,<br />         SAN_REL_PRODUTO_CUSTO relproduto1_ <br />     where<br />         relproduto0_.relProdutoCustoCollection_CUSTO_ID=relproduto1_.CUSTO_ID(+) <br />         and relproduto0_.relProdutoCustoCollection_PRODUTO_ID=relproduto1_.PRODUTO_ID(+) <br />         and relproduto0_.SAN_PRODUTO_PRODUTO_ID=?[/quote]<br /> <br /> Resultado:<br /> [quote]java.sql.SQLException: ORA-00972: identificador muito longo[/quote]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/133845/720468/hibernate-manytomany-annotations---cascade-on-relationship-problem
</guid>
				<link>http://www.guj.com.br/prepost/133845/720468/hibernate-manytomany-annotations---cascade-on-relationship-problem
</link>
				<pubDate><![CDATA[Fri, 31 Jul 2009 13:48:32]]> GMT</pubDate>
				<author><![CDATA[ romuloff]]></author>
			</item>
			<item>
				<title>Re:hibernate &quot;java.sql.SQLException&quot; &quot;identifier is too long&quot;</title>
				<description><![CDATA[ resolví o problema aí de cima. Dei uma força pro hibernate e renomeei o atributo relProdutoCustoCollection pra relProdCustoColl<br /> <br /> Mas está ocorrendo outro problema agora:<br /> [quote]INFO  [LoggerStream.write():152] - Hibernate: <br />     /* load collection br.com.ctbc.avalia.model.data.ProdutoTO.relProdCustoColl */ select<br />         relprodcus0_.PRODUTO_ID as PRODUTO3_1_,<br />         relprodcus0_.relProdCustoColl_CUSTO_ID as relProdC5_1_,<br />         relprodcus0_.relProdCustoColl_PRODUTO_ID as relProdC6_1_,<br />         relproduto1_.CUSTO_ID as CUSTO4_19_0_,<br />         relproduto1_.PRODUTO_ID as PRODUTO3_19_0_,<br />         relproduto1_.QUANTIDADE as QUANTIDADE19_0_,<br />         relproduto1_.VISIVEL_BOOL as VISIVEL2_19_0_ <br />     from<br />         SAN_REL_PRODUTO_CUSTO relprodcus0_,<br />         SAN_REL_PRODUTO_CUSTO relproduto1_ <br />     where<br />         relprodcus0_.relProdCustoColl_CUSTO_ID=relproduto1_.CUSTO_ID(+) <br />         and relprodcus0_.relProdCustoColl_PRODUTO_ID=relproduto1_.PRODUTO_ID(+) <br />         and relprodcus0_.PRODUTO_ID=?<br /> ERROR [JDBCExceptionReporter.logExceptions():78] - ORA-00904: "RELPRODCUS0_"."RELPRODCUSTOCOLL_PRODUTO_ID": identificador inválido<br /> <br /> ERROR [ApplicationDispatcher.invoke():686] - Servlet.service() for servlet jsp threw exception<br /> java.sql.SQLException: ORA-00904: "RELPRODCUS0_"."RELPRODCUSTOCOLL_PRODUTO_ID": identificador inválido[/quote]<br /> <br /> [b]De onde o hibernate está tirando esse RELPRODCUSTOCOLL_PRODUTO_ID[/b] ?<br /> Muito estranho. o RELPRODCUSTOCOLL_ que está a mais é o atributo no TO com letras maiusculas. se remover ele fica certo :<br /> "RELPRODCUS0_"."RELPRODCUSTOCOLL_PRODUTO_ID": identificador inválido<br /> "RELPRODCUS0_"."PRODUTO_ID"<br /> <br /> Meus mapeamentos:<br /> <br /> ProdutoTO.java:<br /> [code]    @OneToMany( targetEntity = RelProdutoCusto.class )<br />     @Cascade( { CascadeType.REFRESH } )<br />     @JoinTable( name = "SAN_REL_PRODUTO_CUSTO", joinColumns = @JoinColumn( name = "PRODUTO_ID" ) )<br />     public Collection&lt;RelProdutoCusto&gt; getRelProdCustoColl() {<br />         return relProdCustoColl;<br />     }[/code]<br /> RelProdutoCusto.JAVA<br /> [code]    @EmbeddedId<br />     @JoinColumns( value = { @JoinColumn( name = "PRODUTO_ID" ), @JoinColumn( name = "CUSTO_ID" ) } )<br />     public RelProdutoCustoCompositePK getRelProdutoCustoCompositePK() {<br />         return relProdutoCustoCompositePK;<br />     }[/code]<br /> RelProdutoCustoCompositePK.java<br /> [code]    @ManyToOne( targetEntity = ProdutoTO.class )<br />     @JoinColumn( name = "PRODUTO_ID", nullable = false )<br />     public ProdutoTO getProdutoTO() {<br />         return produtoTO;<br />     }<br />     <br />     @ManyToOne( targetEntity = CustoTO.class )<br />     @JoinColumn( name = "CUSTO_ID", nullable = false )<br />     public CustoTO getCustoTO() {<br />         return custoTO;<br />     }[/code]<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/133845/720558/rehibernate-javasqlsqlexception-identifier-is-too-long
</guid>
				<link>http://www.guj.com.br/prepost/133845/720558/rehibernate-javasqlsqlexception-identifier-is-too-long
</link>
				<pubDate><![CDATA[Fri, 31 Jul 2009 15:23:16]]> GMT</pubDate>
				<author><![CDATA[ romuloff]]></author>
			</item>
			<item>
				<title>Re:hibernate manyToMany annotations - identificador invalido</title>
				<description><![CDATA[ Solução para o problema acima:<br /> [url]http://boris.kirzner.info/blog/archives/2008/07/19/hibernate-annotations-the-many-to-many-association-with-composite-key/[/url]<br /> <br /> keywords: hibernate annotations , EmbeddedId , AssociationOverrides , Embeddable , AssociationOverride]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/133845/721095/rehibernate-manytomany-annotations---identificador-invalido
</guid>
				<link>http://www.guj.com.br/prepost/133845/721095/rehibernate-manytomany-annotations---identificador-invalido
</link>
				<pubDate><![CDATA[Mon, 3 Aug 2009 08:39:59]]> GMT</pubDate>
				<author><![CDATA[ romuloff]]></author>
			</item>
			<item>
				<title>Re:hibernate manyToMany annotations - identificador invalido</title>
				<description><![CDATA[ [quote=romuloff]Solução para o problema acima:<br /> <br /> [url]http://boris.kirzner.info/blog/archives/2008/07/19/hibernate-annotations-the-many-to-many-association-with-composite-key/[/url][/quote]<br /> <br /> Nao consegui implementar com Cascade pra relação.<br /> Um usuário até colocou um exemplo com cascade nas respostas ( no link acima faça uma pesquisa pelo texto "the sample code DOES NOT provide this")<br /> Mas ocorre o erro abaixo.<br /> Creio que é porque o hibernate não está conseguindo associar o produtoTO no *RelProdutoCusto que estaria sendo salvo pelo cascade; devido aos RelProdutoCusto's que foram setados no produtoTO ainda não terem a co-relação com produtoTO ( [color=red]exatamente porque quero com Cascade e ele deveria fazer essa associação após obter o produtoId, correto?[/color] ). Até que no exemplo do usuário [b]AnD[/b], ele descreve assim: [b]//no need to set product since we are creating a new product[/b]<br /> *RelProdutoCusto = meu relativo de ProductItem do link<br /> <br /> erro: [quote]ERROR [AbstractHibernateDAO.create():108] - Exception on createnull<br /> ERROR [GerenciaProdutoAction.create():400] - exceção inesperada<br /> javax.persistence.PersistenceException: Falha ao tentar inserir objeto<br />         at br.com.ctbc.common.persistence.AbstractHibernateDAO.create(AbstractHibernateDAO.java:109)<br />         at br.com.ctbc.avalia.business.services.impl.ProdutoService.create(ProdutoService.java:196)<br />         at br.com.ctbc.avalia.controller.action.gerencia.GerenciaProdutoAction.create(GerenciaProdutoAction.java:375)<br />         ... [i](irrelevante omitido)[/i]<br />         at java.lang.Thread.run(Thread.java:595)<br /> Caused by: java.lang.NullPointerException<br /> 	at org.hibernate.type.AbstractType.getHashCode(AbstractType.java:112)<br /> 	at org.hibernate.type.AbstractType.getHashCode(AbstractType.java:120)<br /> 	at org.hibernate.type.EntityType.getHashCode(EntityType.java:279)<br /> 	at org.hibernate.type.ComponentType.getHashCode(ComponentType.java:189)<br /> 	at org.hibernate.engine.EntityKey.generateHashCode(EntityKey.java:104)<br /> 	at org.hibernate.engine.EntityKey.&lt;init&gt;(EntityKey.java:48)<br /> 	at org.hibernate.engine.StatefulPersistenceContext.getDatabaseSnapshot(StatefulPersistenceContext.java:240)<br /> 	at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:189)<br /> 	at org.hibernate.event.def.AbstractSaveEventListener.getEntityState(AbstractSaveEventListener.java:512)<br /> 	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:80)<br /> 	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)<br /> 	at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)<br /> 	at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)<br /> 	at org.hibernate.engine.CascadingAction$1.cascade(CascadingAction.java:218)<br /> 	at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268)<br /> 	at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216)<br /> 	at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)<br /> 	at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296)<br /> 	at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242)<br /> 	at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219)<br /> 	at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)<br /> 	at org.hibernate.engine.Cascade.cascade(Cascade.java:130)<br /> 	at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:456)<br /> 	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:334)<br /> 	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)<br /> 	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)<br /> 	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)<br /> 	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)<br /> 	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)<br /> 	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)<br /> 	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)<br /> 	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)<br /> 	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)<br /> 	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)<br /> 	at br.com.ctbc.common.persistence.AbstractHibernateDAO.create(AbstractHibernateDAO.java:100)<br /> 	... 33 more[/quote]<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/133845/721178/rehibernate-manytomany-annotations---identificador-invalido
</guid>
				<link>http://www.guj.com.br/prepost/133845/721178/rehibernate-manytomany-annotations---identificador-invalido
</link>
				<pubDate><![CDATA[Mon, 3 Aug 2009 10:25:28]]> GMT</pubDate>
				<author><![CDATA[ romuloff]]></author>
			</item>
	</channel>
</rss>
