Hibernate One-to-one retornando múltiplas queries

2 respostas
Kenobi

Caros, estou passando um problema no relacionamento one-to-one. Minha consulta deveria fazer um lazy no relacionamento, entretanto o proxy não está sendo resolvido e são disparadas as consultas a cada item do relacionamento.

Exemplo tenho uma tabela NOME e uma SOBRENOME. Se eu tiver 5 registros na SOBRENOME e estiver com o one-to-one mapeado e com lazy=proxy, ele não funciona e itera cada um dos registros.

Alguém já passou por isso ?

Exemplo:

&lt?xml version="1.0"?&gt

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="testes.testeTO"
		table="TESTE"
		dynamic-update="true"
		dynamic-insert="true"
		proxy="testes.testeTO">

		<id name="id" type="java.lang.Long" column="ID_TESTE">
			<generator
				class="native" />
		</id>

		<property
			name="name"
			column="NM_NAME"
			type="java.lang.String"
			update="true"
			insert="true"
		/>

		<one-to-one name="sup" class="testes.suplementoTO" lazy="proxy" constrained="true" cascade="save-update"/>

	</class>

</hibernate-mapping>
&lt?xml version="1.0"?&gt

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="testes.suplementoTO"
		table="TESTESUP"
		dynamic-update="true"
		dynamic-insert="true"
		proxy="testes.suplementoTO">

		<id name="id" type="java.lang.Long" column="ID_SUP">
			<generator class="foreign">
				<param name="property">teste</param>
			</generator>
		</id>

		<one-to-one name="teste" class="testes.testeTO" lazy="proxy"  constrained="true"/>

		<property
			name="name"
			column="NM_SUP"
			type="java.lang.String"
			update="true"
			insert="true"
		/>

	</class>

</hibernate-mapping>
public class Teste {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Session session = HibernateUtil.getSession();
		
		String query = "from testeTO";
		
		Collection teste = session.createQuery(query).list();
		System.out.println("Teste :" + teste.size());
		System.out.println("testado");
	}
}

2 Respostas

Kenobi

alguém tem uma idéia ? :?: :idea:

tads

To com o mesmo problema…

Alguém achou a solução?

Eu achei este link falando sobre limitações do Hibernate:

http://www.hibernate.org/162.html

Agora não sei o que fazer… mudar para many-to-one
vai ficar complicado… tá dificil!!! :thumbdown:

Criado 26 de fevereiro de 2007
Ultima resposta 27 de abr. de 2007
Respostas 2
Participantes 2