[Hibernate-JIRA] Created: (HHH-4953) Inconsistent behavior when fetching cached subclass entities from 2L
by Guenther Demetz (JIRA)
Inconsistent behavior when fetching cached subclass entities from 2L
--------------------------------------------------------------------
Key: HHH-4953
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4953
Project: Hibernate Core
Issue Type: Bug
Components: caching (L2)
Affects Versions: 3.5.0-CR-2, 3.5.0-CR-1, 3.5.0-Beta-4, 3.5.0-Beta-3, 3.5.0-Beta-2, 3.5.0.Beta-1, 3.3.1, 3.2.5
Environment: Hibernate3.5.0CR2,HSQLDB, EHCache as 2L-cache Impl
Reporter: Guenther Demetz
Attachments: Test2LCache.jar
Enabling the hibernate second-level cache is leading to inconsistent behavior when fetching cached subclass entities as opposed to fetching non-cached subclass entities.
For more informations, please see
https://forum.hibernate.org/viewtopic.php?f=1&t=1002880&p=2425931#p2425931
Testcase attached.
Cause:
IMHO the bug consists in the fact, that
persister.getRootEntityName() instead to persister.getEntityName() is passed as 3thrd parameter
to the constructor of CacheKey in most places where CacheKey is used, for example in DefaultLoadEventListener.java:
new CacheKey(
event.getEntityId(),
persister.getIdentifierType(),
persister.getRootEntityName(),
source.getEntityMode(),
source.getFactory()
In this way the real entity name get swallowed and the type-saveness is not guaranteed anymore.
Workaround:
Subclass2 tofind = null;
try {
tofind = (Subclass2) em.find(Subclass2.class,"identifier1");
}
catch (ClassCastException cc) {
// swallow , this is a workaround
}
--
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....
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 2 months
[Hibernate-JIRA] Created: (HHH-3854) Issue with greedy loading of associations (default-lazy=false )
by Amar Singh (JIRA)
Issue with greedy loading of associations (default-lazy=false )
---------------------------------------------------------------
Key: HHH-3854
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3854
Project: Hibernate Core
Issue Type: Bug
Components: envers
Environment: Hibernate - core 3.4.0-SNAPSHOT, Hibernate-envers (from trunk)
Reporter: Amar Singh
Attachments: greedy-loading.zip
I have an Entity GP which has a many to one association to entity CA.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.envers.test.integration.onetoone.bidirectional" default-lazy="false">
<class name="BidirectionalRefIngPK" table="BIDIRECTIONAL_REFERENCING_ENTITY">
<id name="id" type="long" column="BIDIRECTIONAL_REFERENCING_ID" >
<generator class="native"/>
</id>
<property name="data"/>
<many-to-one name="reference" cascade="save-update" class="BidirectionalRefEdPK" column="BIDIRECTIONAL_REFERENCED_ID"/>
</class>
<class name="BidirectionalRefEdPK" table="BIDIRECTIONAL_REFERENCED_ENTITY">
<id name="longId" type="long" column="BIDIRECTIONAL_REFERENCED_ID">
<generator class="native"/>
</id>
<property name="data"/>
</class>
</hibernate-mapping>
With this when I load a previous version of BidirectionalRefIngPK, the loading mechanism tries to create a proxy for BidirectionalRefEdPK, but in my case lazy is false so an internal call to createProxy will return NULL hence .
This happens in ToOneIdMapper.java in method mapToEntityFromMap around line 82, which then internally calls for AbstractEntityTuplizer.java line 395 for getProxyFactory() ending in NULL pointer exception because proxy factory is null as mine is a greedy loading.
TO REPRODUCE
~~~~~~~~~~~~~
Please find a zipped folder attached. The zipped file has 4 files:
- GreedyLoading.java (actual testng test case)
- BidirectionalRefEdPK.java (Entity 1)
- BidirectionalRefIngPK.java (Entity 2)
- greedyloading.hbm.xml
Please place the three java files in its package (org.hibernate.envers.test.integration.onetoone.bidirectional), couldn't find the right package so created test case accordingly. Put the greedyloading.hbm.xml in src/test/resources.
Now when testng runs GreedyLoading.java you should see NPE.
--
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....
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 2 months
[Hibernate-JIRA] Created: (HHH-6913) QuerySyntaxException for valid JPQL query using the IN operator
by Luis Fernando Planella Gonzalez (JIRA)
QuerySyntaxException for valid JPQL query using the IN operator
---------------------------------------------------------------
Key: HHH-6913
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-6913
Project: Hibernate Core
Issue Type: Bug
Components: query-hql
Affects Versions: 3.6.9
Environment: Hibernate 3.6.9, MySQL 5.1
Reporter: Luis Fernando Planella Gonzalez
The following query, which is valid JPQL:
select person
from Person person
where person.id is not null and (person.category is null or person.category in :a1)
Generates the following error:
org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: {vector} [select person
from entities.Person person
where person.id is not null and (person.category is null or person.category in :a10_, :a11_)]
The in clause is not correct.
Note that if removing the 'person.id is not null and' part, the query works. Here is the working example:
select person
from Person person
where person.category is null or person.category in :a1
So, the closing parenthesis must be confusing the IN clause handling.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 2 months