[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-3917) @NotFound(action=NotFoundAction.IGNORE) results in EAGER loading for @ManyToOne(fetch = FetchType.LAZY) field
Vlasov Igor (JIRA)
noreply at atlassian.com
Tue May 19 02:56:14 EDT 2009
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-3917?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=33200#action_33200 ]
Vlasov Igor commented on HHH-3917:
----------------------------------
The method org.hibernate.event.def.DefaultLoadEventListener.load(...)
internaly call method of same class
protected Object loadFromDatasource(
final LoadEvent event,
final EntityPersister persister,
final EntityKey keyToLoad,
final LoadEventListener.LoadType options) {
.....
}
In this method There is no any dependencies on parameter "final LoadEventListener.LoadType options"
(in my case INTERNAL_LOAD_NULLABLE)
> @NotFound(action=NotFoundAction.IGNORE) results in EAGER loading for @ManyToOne(fetch = FetchType.LAZY) field
> -------------------------------------------------------------------------------------------------------------
>
> Key: HHH-3917
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3917
> Project: Hibernate Core
> Issue Type: Bug
> Components: core
> Affects Versions: 3.3.1
> Reporter: Vlasov Igor
>
> Hello
> I try to use @org.hibernate.annotations.NotFound(action=NotFoundAction.IGNORE) annotation to avoid of throwing an exception IN
> @JoinColumn(name = "UR_ID", referencedColumnName = "UR_ID")
> @ManyToOne(fetch = FetchType.LAZY)
> @org.hibernate.annotations.NotFound(action=NotFoundAction.IGNORE)
> @Basic(optional=true)
> private UserRole role;
> Then it results me to EAGER loading of this field.
> Throw days of debuging i have found that:
> 1. @org.hibernate.annotations.NotFound results in:
> isNullable()=true
> for org.hibernate.type.ManyToOneType
> 2. in org.hibernate.impl.SessionImpl and method internalLoad i can see:
> LoadEventListener.LoadType type = nullable ?
> LoadEventListener.INTERNAL_LOAD_NULLABLE :
> eager ? LoadEventListener.INTERNAL_LOAD_EAGER : LoadEventListener.INTERNAL_LOAD_LAZY;
> Threrefore we have LoadEventListener.INTERNAL_LOAD_NULLABLE type of loading my relation. !!!
> and in class org.hibernate.event.LoadEventListener.INTERNAL_LOAD_NULLABLE I can see setAllowProxyCreation(false) !!!!
> 3. in org.hibernate.event.def.DefaultLoadEventListener in line 218 there is a condition:
> if ( options.isAllowProxyCreation() ) {
> return createProxyIfNecessary( event, persister, keyToLoad, options, persistenceContext );
> } else {
> return load(event, persister, keyToLoad, options);
> }
> In my case LoadEventListener.INTERNAL_LOAD_NULLABLE.isAllowProxyCreation() ==false !!
> and it results in LOADING of Object !!!
> Can we set LoadEventListener.INTERNAL_LOAD_NULLABLE.isAllowProxyCreation() to true ?
> org.hibernate.event.LoadEventListener.INTERNAL_LOAD_NULLABLE = new LoadType("INTERNAL_LOAD_NULLABLE")
> .setAllowNulls(true)
> .setAllowProxyCreation(false)
> .setCheckDeleted(false)
> .setNakedEntityReturned(false);
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list