]
Steve Ebersole closed HHH-905.
------------------------------
Closing stale resolved issues
$PlaceHolder$ remains in generated SQL when filter is enabled
-------------------------------------------------------------
Key: HHH-905
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-905
Project: Hibernate Core
Issue Type: Bug
Components: core
Affects Versions: 3.1 beta 2
Environment: JDK 1.5.0_03,
Oracle 10.1.0.3
Reporter: Fedor Bokov
Assignee: Steve Ebersole
Fix For: 3.1 rc 1
Attachments: HHH-905.src.zip
When I enable filter on session, Hibernate 3.1b1 & 3.1b2 generate following SQL:
select folder0_."ID" as ID1_13_, folder0_."sName" as sName3_13_,
folder0_."idContentObjectType" as idConten4_13_, folder0_."idOwner" as
idOwner5_13_, folder0_."idParent" as idParent6_13_, folder0_."nType"
as nType2_13_ from "Folders" folder0_ where (0 =
$PlaceHolder$."idOwner" OR :VisibleObjects.userid =
$PlaceHolder$."idOwner") and (folder0_."idParent" is null)
Note those $PlaceHolder$
Here is mapping of class "Folder" and definition of filter
"VisibleObjects":
<class name="Folder" table="`Folders`"
discriminator-value="2" lazy="false">
<cache usage="read-write"/>
<id name="id" type="long" unsaved-value="0">
<column name="`ID`" not-null="true"/>
<generator class="sequence">
<param name="sequence">"Folders_ID_seq"</param>
</generator>
</id>
<discriminator column="`nType`"/>
<property name="name" column="`sName`"/>
<many-to-one name="contentObjectType"
column="`idContentObjectType`" outer-join="false"
class="com.agi.sputnik.dataproviders.dataprovider1.dataobjects.metadata.ObjectType"/>
<many-to-one name="owner" column="`idOwner`"
class="com.agi.sputnik.dataproviders.dataprovider1.dataobjects.User"
cascade="none"/>
<many-to-one name="parent" class="Folder"
column="`idParent`" outer-join="false"/>
<property name="type" column="`nType`" insert="false"
update="false"/>
<bag name="subFolders" order-by="`sName`"
inverse="true">
<cache usage="read-write"/>
<key column="`idParent`"/>
<one-to-many class="Folder"/>
<filter name="VisibleObjects" condition="(`idOwner` = 0 OR `idOwner`
= :userid)" />
</bag>
<subclass discriminator-value="0" name="UserFolder">
<set name="objects" table="`FolderObjects`"
lazy="true">
<cache usage="read-write"/>
<key column="`idFolder`"/>
<element type="long" column="`idObject`"/>
</set>
</subclass>
<subclass discriminator-value="3" name="PocketFolder"/>
<subclass discriminator-value="1" name="ObjectTypeFolder"/>
<filter name="VisibleObjects" condition="(0 = `idOwner` OR :userid =
`idOwner`)" />
</class>
<filter-def name="VisibleObjects" >
<filter-param name="userid" type="long" />
</filter-def>
Fragment of code which enables filter and executes query:
Session hs = getSession();
hs.enableFilter( "VisibleObjects" ).setParameter( "userid",
owner.getId() );
Query q = hs.createQuery( "FROM Folder obj WHERE obj.parent is null" );
List<IFolder> objList = q.list();
I use Oracle9Dialect.
These filters used to work with 3.0.5, appears to be broken in 3.1.
Let me know if you need more information...
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: