[Hibernate-JIRA] Created: (HHH-3325) Pagination with Oracle ROWNUM is sub-optimal
by e. wernli (JIRA)
Pagination with Oracle ROWNUM is sub-optimal
--------------------------------------------
Key: HHH-3325
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3325
Project: Hibernate3
Issue Type: Bug
Affects Versions: 3.2.5
Reporter: e. wernli
Pagination with Oracle ROWNUM is sub-optimal
The feature works but result in sub-optimal SQL. The generated SQL is the following:
select * from ( select row_.*, rownum rownum_ from ( select this_.id as id3_0_, this_.version as version3_0_, this_.name as name3_0_, this_.type as type3_0_, this_.marketstatus as marketst5_3_0_ from Customer this_ order by this_.id asc ) row_ ) where rownum_ <= ? and rownum_ > ?
But this SQL is faster:
SELECT *
FROM (SELECT row_.*, ROWNUM rownum_
FROM (SELECT this_.ID AS id3_0_, this_.VERSION AS version3_0_,
this_.NAME AS name3_0_, this_.TYPE AS type3_0_,
this_.marketstatus AS marketst5_3_0_
FROM customer this_
ORDER BY this_.ID ASC) row_
WHERE ROWNUM <= ?)
WHERE rownum_ > ?
The second solution allows Oracle to use an optimization that can dramatically reduce the time of the query, especially one of the first page is retrieved.
See this link for an explanation of this optimization: http://decipherinfosys.wordpress.com/2007/08/09/paging-and-countstopkey-o...
--
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
14 years, 10 months
[Hibernate-JIRA] Created: (HHH-4956) Native Query returns wrong results
by Akashdeep Saddi (JIRA)
Native Query returns wrong results
----------------------------------
Key: HHH-4956
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4956
Project: Hibernate Core
Issue Type: Bug
Components: query-sql
Affects Versions: 3.3.2
Environment: hibernate 3.3.2.GA , linux, oracle 10g, weblogic 10
Reporter: Akashdeep Saddi
Issue: In-case running native queries vai hibernate we have two technical ID's in the select clause from join of two or more tables the value of all the id's is set to one value.
Example
A.id = 1
B.id =2
select A.Id as A_ID, B.Id as B_ID from A, B where A.B_id = B.id will return 1,1 in the result instead of 1,2
Resolution: Use Alias in-case more than one technical keys are part of select clause. Above query works fine when changed as below
select A.Id , B.Id from A, B where A.B_id = B.id will return 1,2
--
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
14 years, 10 months
[Hibernate-JIRA] Created: (HHH-5654) query.setLockMode("alias", LockMode.LockMode.PESSIMISTIC_WRITE); does not Lock in PostgreSqlDialect
by Peter Buning (JIRA)
query.setLockMode("alias", LockMode.LockMode.PESSIMISTIC_WRITE); does not Lock in PostgreSqlDialect
---------------------------------------------------------------------------------------------------
Key: HHH-5654
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5654
Project: Hibernate Core
Issue Type: Bug
Affects Versions: 3.5.5
Environment: Hibernate 3.5.5-Final
PostgreSQL 8.4
Reporter: Peter Buning
When you call
{{query.setLockMode("alias", LockMode.PESSIMISTIC_WRITE);}}
you get a Query with a LockOptions object that has lockMode = LockMode.NONE and a aliasSpecificLockModes-map with an entry "alias" -> LockMode.PESSIMISTIC_WRITE
When calling {{query.list()}} you get to the QueryLoader which calls {{dialect.applyLocksToSql(...)}}
The LockOptions-Object has still lockMode=LockMode.NONE and a aliasSpecificLockModes-map with the translated alias and -> LockMode.PESSIMISTIC_WRITE
As we use PostgreSQL dialect is an instance of PostgreSQLDialect.
So you get a ForUpdateFragement-object with the same LockOptions-object. The aliases-String contains the translated "alias".
In {{toFragmentString()}} {{getForUpdateString(String aliases, LockOptions lockOptions)}} is called because we have a LockOptions-object. The aliases are ignored in this case, as you can see in the comment:'by default we simply return the getForUpdateString() result since the default is to say no support for "FOR UPDATE OF ..."'
But the {{getForUpdateString(LockOptions lockOptions)}} is only looking at the the lockMode-Attribute of the LockOptions-object what has still the value "LockMode.NONE". It results in an empty String as the return value. But it should be " for update" because there's a LockMode.PESSIMISTIC_WRITE in the aliasSpecificLockModes which is ignored in getForUpdateString(LockOptions lockOptions)
--
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
14 years, 11 months
[Hibernate-JIRA] Created: (HHH-5752) revisionFieldName overide causes invalid column aliases on many-to-many relationships
by Adam Evans (JIRA)
revisionFieldName overide causes invalid column aliases on many-to-many relationships
-------------------------------------------------------------------------------------
Key: HHH-5752
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5752
Project: Hibernate Core
Issue Type: Bug
Components: envers
Affects Versions: 3.5.6
Environment: MySql5
Reporter: Adam Evans
Had a issue which took a good while to track down.
When using AuditReader.find(Entity.clas, id, revision) to pull back a revision of a entity a SQL exception was given with a non unique column alias on entities with a many-to-many field, other entites without manytomany worked.
It looks like the query was generating a duplicate '_revision' field without using an column alias. '_revision' was set using the property overide 'org.hibernate.envers.revisionFieldName=_revision' .
Below is a copy of the failing query:
{code:sql}
SELECT _revision AS col_0_0_,
assoc_acti0_.activity_id AS col_0_1_,
assoc_acti0_.facility_id AS col_0_2_,
facility_v1_.id AS col_1_0_,
_revision AS col_1_1_
FROM assoc_activity_facility_versions assoc_acti0_
CROSS JOIN facility_versions facility_v1_
WHERE assoc_acti0_.facility_id = facility_v1_.id
AND assoc_acti0_.activity_id = 1
AND _revision = (SELECT MAX(_revision)
FROM facility_versions facility_v2_
WHERE _revision <= 1
AND facility_v1_.id = facility_v2_.id)
AND _revision = (SELECT MAX(_revision)
FROM assoc_activity_facility_versions assoc_acti3_
WHERE _revision <= 1
AND assoc_acti0_.activity_id =
assoc_acti3_.activity_id
AND assoc_acti0_.facility_id =
assoc_acti3_.facility_id)
AND _rev_type <> 2
AND _rev_type <> 2
{code}
After lots of debugging trying to create test cases based on my entity relationships which where passing without problem it occurred on the test project i'd not overiden 'org.hibernate.envers.revisionFieldName' . As soon as I set this property the test cases started failing. Removing this property from the original project, aliases are generated correctly and audited entities with many to many relatioships can now be retreivied. Below is the working sql generated with 'org.hibernate.envers.revisionFieldName' not set.
{code:sql}
SELECT assoc_acti0_.rev AS col_0_0_,
assoc_acti0_.activity_id AS col_0_1_,
assoc_acti0_.category_id AS col_0_2_,
category_a1_.id AS col_1_0_,
category_a1_.rev AS col_1_1_
FROM assoc_activity_category_aud assoc_acti0_
CROSS JOIN category_aud category_a1_
WHERE assoc_acti0_.category_id = category_a1_.id
AND assoc_acti0_.activity_id = 1
AND category_a1_.rev = (SELECT Max(category_a2_.rev)
FROM category_aud category_a2_
WHERE category_a2_.rev<=1
AND category_a1_.id = category_a2_.id)
AND assoc_acti0_.rev = (SELECT Max(assoc_acti3_.rev)
FROM assoc_activity_category_aud assoc_acti3_
WHERE assoc_acti3_.rev<=1
AND assoc_acti0_.activity_id =
assoc_acti3_.activity_id
AND assoc_acti0_.category_id =
assoc_acti3_.category_id)
AND assoc_acti0_.revtype<>2
AND category_a1_.revtype<>2
{code}
--
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
14 years, 11 months
[Hibernate-JIRA] Created: (JPA-7) JPA Support of Enum as Primary Key
by Bernard (JIRA)
JPA Support of Enum as Primary Key
----------------------------------
Key: JPA-7
URL: http://opensource.atlassian.com/projects/hibernate/browse/JPA-7
Project: Java Persistence API
Issue Type: Improvement
Affects Versions: 1.0.1
Environment: java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)
Hibernate JPA as installed with latest NetBeans release 6.9.1
Reporter: Bernard
Priority: Critical
Attachments: TestCase.zip
Enums work as primary keys in TopLink and EclipseLink.
DataNucleus supports them, too:
http://www.datanucleus.org/products/accessplatform/jpa/primary_key.html
In the attached testcase, JPA, via persistence.xml, creates a database column type of
VARBINARY. The data contained in it is like:
10101100111011010000000000000101~r0000000000011000main.MyEntity$EntityType0000000000000000000000000000000000000000000000000000000000000000000100100000000000000000xr0000000000001110java.lang.Enum0000000000000000000000000000000000000000000000000000000000000000000100100000000000000000xpt0000000000000110TYPE_1 Type 1
That is not what we need.
We need an integer because in the entity class, we specify
@Enumerated(value = EnumType.ORDINAL)
While Enum as ID field is not specifically supported in the JPA specs, it is not specifically excluded, either.
It would be desirable to have the new version of the spec include this feature, too.
The attached testcase (zip file) runs with NetBeans out of the box.
--
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
14 years, 11 months
[Hibernate-JIRA] Created: (HHH-4613) HQL: QuerySyntaxException when parsing any condition containing a colum named "value"
by Guenther Demetz (JIRA)
HQL: QuerySyntaxException when parsing any condition containing a colum named "value"
-------------------------------------------------------------------------------------
Key: HHH-4613
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4613
Project: Hibernate Core
Issue Type: Bug
Components: core
Affects Versions: 3.5.0-Beta-2
Environment: 3.5.0-Beta2, Db: HSQLDB
Reporter: Guenther Demetz
Priority: Minor
Attachments: TestCaseQueryWithCondition.jar
org.hibernate.hql.ast.QuerySyntaxException: expecting OPEN, found '=' near line 1, column 27
is thrown calling
((org.hibernate.Session) session).createQuery("from hello.A where value = ?");
Please note that until Hibernate3.3.2GA this worked fine!
Apparently 'value' unintentionally has become a reserved keyword for HQL conditions.
Here the complete stacktrace:
--> org.hibernate.hql.ast.QuerySyntaxException: expecting OPEN, found '=' near line 1, column 27 [from hello.A where value = ?]
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:82)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:284)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:182)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1586)
at hello.TestQueryWithCondition.testQuery(TestQueryWithCondition.java:40)
Please consider attached junit-testcase.
best regards
Guenther Demetz
--
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
14 years, 11 months
[Hibernate-JIRA] Created: (HHH-2596) Add support for Hypersonic 1.8.0.7
by Gail Badner (JIRA)
Add support for Hypersonic 1.8.0.7
----------------------------------
Key: HHH-2596
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2596
Project: Hibernate3
Issue Type: Improvement
Components: core
Affects Versions: 3.2.3
Environment: Hibernate 3.2.3, Hypersonic 1.8.0.7
Reporter: Gail Badner
The version released with Hibernate 3.2.3 (1.8.0.2) is from 2005. It would be good to move to a more recent version.
The following unit tests fail when using Hypersonic 1.8.0.7:
org.hibernate.test.jpa.lock.JPALockTest.testLockModeTypeRead:
Failure: isolation not maintained expected:<lock test> but was:<updated>
org.hibernate.test.legacy.IJ2Test.testUnionSubclass:
Error: could not set a field value by reflection setter of org.hibernate.test.legacy.J.amount
org.hibernate.test.subclassfilter.UnionSubclassFilterTest.testFiltersWithUnionSubclass:
Error: Could not execute JDBC batch update
org.hibernate.test.unionsubclass.UnionSubclassTest.testUnionSubclass:
Failure: junit.framework.AssertionFailedError
org.hibernate.test.unionsubclass.UnionSubclassTest.testUnionSubclassManyToOne
Error: attempt to create delete event with null entity
--
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
14 years, 11 months