Joined: Mon Aug 09, 2004 8:27 pm Posts: 15 Location: Brazil
|
First off, all my persistent objects extend PersistentObject so they can utilize some system properties common to all persistent objects (for example: created date, modified date, created by, modified by)
This is a sample as how i could call the query:
Code: User user = (User)dao.load(User.class, new Long(1)); and here is the load function in my dao: Code: public Object load(Class c, Long id){ return getHibernateTemplate().load(c, id); }
As you can see the SQL below, it's huge - and this is just to retrieve a user :) I have some really big objects that when i try to query, hibernate can't handle the SQL as i can't even imagine the length of the SQL being generated... Is there a way to simplify the SQL being generated?
Thanks,
~karokain
Hibernate version: 2.1.4
Mapping documents: <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping> <class name="com.pcpower.amss.PersistentObject" table="Registry" dynamic-update="false" dynamic-insert="false" >
<id name="id" column="id" type="java.lang.Long" > <generator class="identity"> </generator> </id>
<property name="active" type="boolean" update="true" insert="true" access="property" column="active" length="1" not-null="false" />
<many-to-one name="createdBy" class="com.pcpower.amss.security.objects.User" cascade="all" outer-join="auto" update="true" insert="true" access="property" column="createdBy" not-null="false" />
<property name="createdDate" type="java.util.Date" update="true" insert="true" access="property" column="createdDate" not-null="false" />
<many-to-one name="modifiedBy" class="com.pcpower.amss.security.objects.User" cascade="all" outer-join="auto" update="true" insert="true" access="property" column="modifiedBy" not-null="false" />
<property name="modifiedDate" type="java.util.Date" update="true" insert="true" access="property" column="modifiedDate" not-null="false" />
<many-to-one name="parent" class="com.pcpower.amss.PersistentObject" cascade="none" outer-join="auto" update="true" insert="true" access="property" column="activeId" not-null="false" />
<!-- To add non XDoclet property mappings, create a file named hibernate-properties-PersistentObject.xml containing the additional properties and place it in your merge dir. -->
<joined-subclass name="com.pcpower.amss.security.objects.Role" table="Roles" dynamic-update="false" dynamic-insert="false" > <key column="id" />
<property name="name" type="java.lang.String" update="true" insert="true" access="property" column="name" length="50" not-null="true" />
</joined-subclass> <joined-subclass name="com.pcpower.amss.security.objects.Client" table="Clients" dynamic-update="false" dynamic-insert="false" > <key column="id" />
<property name="name" type="java.lang.String" update="true" insert="true" access="property" column="name" length="50" not-null="true" />
</joined-subclass> <joined-subclass name="com.pcpower.amss.security.objects.User" table="Users" dynamic-update="false" dynamic-insert="false" > <key column="id" /> <property name="birthDate" type="java.util.Date" update="true" insert="true" access="property" column="birthDate" length="10" not-null="false" />
<property name="cellular" type="java.lang.String" update="true" insert="true" access="property" column="cellular" length="21" not-null="false" />
<many-to-one name="client" class="com.pcpower.amss.security.objects.Client" cascade="none" outer-join="auto" update="true" insert="true" access="property" column="client" not-null="true" />
<many-to-one name="department" class="com.pcpower.amss.security.objects.Department" cascade="none" outer-join="auto" update="true" insert="true" access="property" column="department" not-null="false" />
<property name="email" type="java.lang.String" update="true" insert="true" access="property" column="email" length="75" not-null="false" />
<property name="govId" type="java.lang.String" update="true" insert="true" access="property" column="govId" length="50" not-null="true" />
<property name="name" type="java.lang.String" update="true" insert="true" access="property" column="name" length="75" not-null="true" />
<property name="password" type="java.lang.String" update="true" insert="true" access="property" column="password" length="16" not-null="true" />
<set name="roles" table="UserRoles" lazy="false" inverse="false" cascade="none" sort="unsorted" >
<key column="user_id" > </key>
<many-to-many class="com.pcpower.amss.security.objects.Role" column="role_id" outer-join="auto" />
</set>
<property name="telephone" type="java.lang.String" update="true" insert="true" access="property" column="telephone" length="21" not-null="false" />
<property name="username" type="java.lang.String" update="true" insert="true" access="property" column="username" length="16" not-null="true" />
</joined-subclass> <joined-subclass name="com.pcpower.amss.security.objects.Department" table="Departments" dynamic-update="false" dynamic-insert="false" > <key column="id" />
<property name="name" type="java.lang.String" update="true" insert="true" access="property" column="name" length="50" not-null="true" />
</joined-subclass>
</class>
</hibernate-mapping>
Name and version of the database you are using: MS SQL Sever 2000
The generated SQL (show_sql=true): Hibernate: select user0_.id as id6_, user0_.birthDate as birthDate3_6_, user0_.cellular as cellular3_6_, user0_.client as client3_6_, user0_.department as department3_6_, user0_.email as email3_6_, user0_.govId as govId3_6_, user0_.name as name3_6_, user0_.password as password3_6_, user0_.telephone as telephone3_6_, user0_.username as username3_6_, user0__1_.active as active0_6_, user0__1_.createdBy as createdBy0_6_, user0__1_.createdDate as createdD4_0_6_, user0__1_.modifiedBy as modifiedBy0_6_, user0__1_.modifiedDate as modified6_0_6_, user0__1_.activeId as activeId0_6_, client1_.id as id0_, client1_.name as name2_0_, client1__1_.active as active0_0_, client1__1_.createdBy as createdBy0_0_, client1__1_.createdDate as createdD4_0_0_, client1__1_.modifiedBy as modifiedBy0_0_, client1__1_.modifiedDate as modified6_0_0_, client1__1_.activeId as activeId0_0_, persistent2_.id as id1_, case when persistent2__1_.id is not null then 1 when persistent2__2_.id is not null then 2 when persistent2__3_.id is not null then 3 when persistent2__4_.id is not null then 4 when persistent2_.id is not null then 0 end as clazz_1_, persistent2_.active as active0_1_, persistent2_.createdBy as createdBy0_1_, persistent2_.createdDate as createdD4_0_1_, persistent2_.modifiedBy as modifiedBy0_1_, persistent2_.modifiedDate as modified6_0_1_, persistent2_.activeId as activeId0_1_, persistent2__1_.name as name1_1_, persistent2__2_.name as name2_1_, persistent2__3_.birthDate as birthDate3_1_, persistent2__3_.cellular as cellular3_1_, persistent2__3_.client as client3_1_, persistent2__3_.department as department3_1_, persistent2__3_.email as email3_1_, persistent2__3_.govId as govId3_1_, persistent2__3_.name as name3_1_, persistent2__3_.password as password3_1_, persistent2__3_.telephone as telephone3_1_, persistent2__3_.username as username3_1_, persistent2__4_.name as name5_1_, persistent3_.id as id2_, case when persistent3__1_.id is not null then 1 when persistent3__2_.id is not null then 2 when persistent3__3_.id is not null then 3 when persistent3__4_.id is not null then 4 when persistent3_.id is not null then 0 end as clazz_2_, persistent3_.active as active0_2_, persistent3_.createdBy as createdBy0_2_, persistent3_.createdDate as createdD4_0_2_, persistent3_.modifiedBy as modifiedBy0_2_, persistent3_.modifiedDate as modified6_0_2_, persistent3_.activeId as activeId0_2_, persistent3__1_.name as name1_2_, persistent3__2_.name as name2_2_, persistent3__3_.birthDate as birthDate3_2_, persistent3__3_.cellular as cellular3_2_, persistent3__3_.client as client3_2_, persistent3__3_.department as department3_2_, persistent3__3_.email as email3_2_, persistent3__3_.govId as govId3_2_, persistent3__3_.name as name3_2_, persistent3__3_.password as password3_2_, persistent3__3_.telephone as telephone3_2_, persistent3__3_.username as username3_2_, persistent3__4_.name as name5_2_, department4_.id as id3_, department4_.name as name5_3_, department4__1_.active as active0_3_, department4__1_.createdBy as createdBy0_3_, department4__1_.createdDate as createdD4_0_3_, department4__1_.modifiedBy as modifiedBy0_3_, department4__1_.modifiedDate as modified6_0_3_, department4__1_.activeId as activeId0_3_, department5_.id as id4_, department5_.name as name5_4_, department5__1_.active as active0_4_, department5__1_.createdBy as createdBy0_4_, department5__1_.createdDate as createdD4_0_4_, department5__1_.modifiedBy as modifiedBy0_4_, department5__1_.modifiedDate as modified6_0_4_, department5__1_.activeId as activeId0_4_, department6_.id as id5_, department6_.name as name5_5_, department6__1_.active as active0_5_, department6__1_.createdBy as createdBy0_5_, department6__1_.createdDate as createdD4_0_5_, department6__1_.modifiedBy as modifiedBy0_5_, department6__1_.modifiedDate as modified6_0_5_, department6__1_.activeId as activeId0_5_ from Users user0_ inner join Registry user0__1_ on user0_.id=user0__1_.id left outer join Clients client1_ on user0_.client=client1_.id left outer join Registry client1__1_ on client1_.id=client1__1_.id left outer join Registry persistent2_ on client1__1_.activeId=persistent2_.id left outer join Roles persistent2__1_ on persistent2_.id=persistent2__1_.id left outer join Clients persistent2__2_ on persistent2_.id=persistent2__2_.id left outer join Users persistent2__3_ on persistent2_.id=persistent2__3_.id left outer join Departments persistent2__4_ on persistent2_.id=persistent2__4_.id left outer join Registry persistent3_ on persistent2_.activeId=persistent3_.id left outer join Roles persistent3__1_ on persistent3_.id=persistent3__1_.id left outer join Clients persistent3__2_ on persistent3_.id=persistent3__2_.id left outer join Users persistent3__3_ on persistent3_.id=persistent3__3_.id left outer join Departments persistent3__4_ on persistent3_.id=persistent3__4_.id left outer join Departments department4_ on persistent3__3_.department=department4_.id left outer join Registry department4__1_ on department4_.id=department4__1_.id left outer join Departments department5_ on persistent2__3_.department=department5_.id left outer join Registry department5__1_ on department5_.id=department5__1_.id left outer join Departments department6_ on user0_.department=department6_.id left outer join Registry department6__1_ on department6_.id=department6__1_.id where user0_.id=? Hibernate: select roles0_.role_id as role_id__, roles0_.user_id as user_id__, role1_.id as id0_, role1_.name as name1_0_, role1__1_.active as active0_0_, role1__1_.createdBy as createdBy0_0_, role1__1_.createdDate as createdD4_0_0_, role1__1_.modifiedBy as modifiedBy0_0_, role1__1_.modifiedDate as modified6_0_0_, role1__1_.activeId as activeId0_0_, user2_.id as id1_, user2_.birthDate as birthDate3_1_, user2_.cellular as cellular3_1_, user2_.client as client3_1_, user2_.department as department3_1_, user2_.email as email3_1_, user2_.govId as govId3_1_, user2_.name as name3_1_, user2_.password as password3_1_, user2_.telephone as telephone3_1_, user2_.username as username3_1_, user2__1_.active as active0_1_, user2__1_.createdBy as createdBy0_1_, user2__1_.createdDate as createdD4_0_1_, user2__1_.modifiedBy as modifiedBy0_1_, user2__1_.modifiedDate as modified6_0_1_, user2__1_.activeId as activeId0_1_, client3_.id as id2_, client3_.name as name2_2_, client3__1_.active as active0_2_, client3__1_.createdBy as createdBy0_2_, client3__1_.createdDate as createdD4_0_2_, client3__1_.modifiedBy as modifiedBy0_2_, client3__1_.modifiedDate as modified6_0_2_, client3__1_.activeId as activeId0_2_, persistent4_.id as id3_, case when persistent4__1_.id is not null then 1 when persistent4__2_.id is not null then 2 when persistent4__3_.id is not null then 3 when persistent4__4_.id is not null then 4 when persistent4_.id is not null then 0 end as clazz_3_, persistent4_.active as active0_3_, persistent4_.createdBy as createdBy0_3_, persistent4_.createdDate as createdD4_0_3_, persistent4_.modifiedBy as modifiedBy0_3_, persistent4_.modifiedDate as modified6_0_3_, persistent4_.activeId as activeId0_3_, persistent4__1_.name as name1_3_, persistent4__2_.name as name2_3_, persistent4__3_.birthDate as birthDate3_3_, persistent4__3_.cellular as cellular3_3_, persistent4__3_.client as client3_3_, persistent4__3_.department as department3_3_, persistent4__3_.email as email3_3_, persistent4__3_.govId as govId3_3_, persistent4__3_.name as name3_3_, persistent4__3_.password as password3_3_, persistent4__3_.telephone as telephone3_3_, persistent4__3_.username as username3_3_, persistent4__4_.name as name5_3_, persistent5_.id as id4_, case when persistent5__1_.id is not null then 1 when persistent5__2_.id is not null then 2 when persistent5__3_.id is not null then 3 when persistent5__4_.id is not null then 4 when persistent5_.id is not null then 0 end as clazz_4_, persistent5_.active as active0_4_, persistent5_.createdBy as createdBy0_4_, persistent5_.createdDate as createdD4_0_4_, persistent5_.modifiedBy as modifiedBy0_4_, persistent5_.modifiedDate as modified6_0_4_, persistent5_.activeId as activeId0_4_, persistent5__1_.name as name1_4_, persistent5__2_.name as name2_4_, persistent5__3_.birthDate as birthDate3_4_, persistent5__3_.cellular as cellular3_4_, persistent5__3_.client as client3_4_, persistent5__3_.department as department3_4_, persistent5__3_.email as email3_4_, persistent5__3_.govId as govId3_4_, persistent5__3_.name as name3_4_, persistent5__3_.password as password3_4_, persistent5__3_.telephone as telephone3_4_, persistent5__3_.username as username3_4_, persistent5__4_.name as name5_4_, department6_.id as id5_, department6_.name as name5_5_, department6__1_.active as active0_5_, department6__1_.createdBy as createdBy0_5_, department6__1_.createdDate as createdD4_0_5_, department6__1_.modifiedBy as modifiedBy0_5_, department6__1_.modifiedDate as modified6_0_5_, department6__1_.activeId as activeId0_5_, department7_.id as id6_, department7_.name as name5_6_, department7__1_.active as active0_6_, department7__1_.createdBy as createdBy0_6_, department7__1_.createdDate as createdD4_0_6_, department7__1_.modifiedBy as modifiedBy0_6_, department7__1_.modifiedDate as modified6_0_6_, department7__1_.activeId as activeId0_6_, department8_.id as id7_, department8_.name as name5_7_, department8__1_.active as active0_7_, department8__1_.createdBy as createdBy0_7_, department8__1_.createdDate as createdD4_0_7_, department8__1_.modifiedBy as modifiedBy0_7_, department8__1_.modifiedDate as modified6_0_7_, department8__1_.activeId as activeId0_7_ from UserRoles roles0_ inner join Roles role1_ on roles0_.role_id=role1_.id left outer join Registry role1__1_ on role1_.id=role1__1_.id left outer join Users user2_ on role1__1_.createdBy=user2_.id left outer join Registry user2__1_ on user2_.id=user2__1_.id left outer join Clients client3_ on user2_.client=client3_.id left outer join Registry client3__1_ on client3_.id=client3__1_.id left outer join Registry persistent4_ on client3__1_.activeId=persistent4_.id left outer join Roles persistent4__1_ on persistent4_.id=persistent4__1_.id left outer join Clients persistent4__2_ on persistent4_.id=persistent4__2_.id left outer join Users persistent4__3_ on persistent4_.id=persistent4__3_.id left outer join Departments persistent4__4_ on persistent4_.id=persistent4__4_.id left outer join Registry persistent5_ on persistent4_.activeId=persistent5_.id left outer join Roles persistent5__1_ on persistent5_.id=persistent5__1_.id left outer join Clients persistent5__2_ on persistent5_.id=persistent5__2_.id left outer join Users persistent5__3_ on persistent5_.id=persistent5__3_.id left outer join Departments persistent5__4_ on persistent5_.id=persistent5__4_.id left outer join Departments department6_ on persistent5__3_.department=department6_.id left outer join Registry department6__1_ on department6_.id=department6__1_.id left outer join Departments department7_ on persistent4__3_.department=department7_.id left outer join Registry department7__1_ on department7_.id=department7__1_.id left outer join Departments department8_ on user2_.department=department8_.id left outer join Registry department8__1_ on department8_.id=department8__1_.id where roles0_.user_id=?
|
|