[Hibernate-JIRA] Created: (HHH-5209) org.hibernate.hql.ast.QuerySyntaxException when running a JPQL query with a MEMBER OF on an @ElementCollection
by Pascal Thivent (JIRA)
org.hibernate.hql.ast.QuerySyntaxException when running a JPQL query with a MEMBER OF on an @ElementCollection
--------------------------------------------------------------------------------------------------------------
Key: HHH-5209
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5209
Project: Hibernate Core
Issue Type: Bug
Components: core, entity-manager
Affects Versions: 3.5.1
Environment: Hibernate EM 3.5.1, HSQLDB, Derby, H2
Reporter: Pascal Thivent
Priority: Blocker
Attachments: QueryTest.patch
I have an entity with an attribute of type {{Set<String>}} annotated as {{@ElementCollection}}. Running a query with a {{MEMBER OF}} on this attribute fails with Hibernate (but works with the RI):
{code}
select user from User user where :role member of user.roles
{code}
This is valid JPQL but Hibernate is not able to generate the corresponding SQL properly:
{code:java}
java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: unexpected end of subtree [select user from org.hibernate.ejb.test.User user where :role member of user.roles]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1222)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1168)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:271)
at org.hibernate.ejb.test.query.QueryTest.testMemberOfElementCollection(QueryTest.java:110)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at junit.framework.TestCase.runTest(TestCase.java:154)
at org.hibernate.test.annotations.HibernateTestCase.runTest(HibernateTestCase.java:95)
at org.hibernate.test.annotations.HibernateTestCase.runBare(HibernateTestCase.java:83)
at org.hibernate.ejb.test.TestCase.runBare(TestCase.java:224)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected end of subtree [select user from org.hibernate.ejb.test.User user where :role member of user.roles]
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.generate(QueryTranslatorImpl.java:244)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:205)
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:98)
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:1761)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:268)
... 19 more
{code}
I'm not sure this would be the right place (this seems to be a problem in Hibernate Core actually) but I've implemented a test method in {{org.hibernate.ejb.test.query.QueryTest}} demonstrating the problem. The patch is attached.
--
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
13 years, 6 months
[Hibernate-JIRA] Created: (HSEARCH-269) Spell check functionality needed
by John Griffin (JIRA)
Spell check functionality needed
--------------------------------
Key: HSEARCH-269
URL: http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-269
Project: Hibernate Search
Issue Type: New Feature
Components: engine, mapping
Affects Versions: 3.2.0
Reporter: John Griffin
Assignee: John Griffin
>From Emmanuel:
- more than one field and even more than one index should be the source of the dictionary
- declaring which field is part of a dictionary should be declarative @AddToDictionary(name="main-dictionary")
(with probably an optional field name(s))
- for a given dictionary name, we need to associate an index and probably a field prefix (to share the same index
for all dictionaries). This couold be by annotations or in the configuration (not sure)
- this index should be kept like any other DirectoryProvider in the HSearch intrastructure (we could then reuse
ReaderProvider internally and don't have leaks).
- we will probably add a manual dictionary reindex method and the SpellChecker API should be in the SearchFactory.
sf.getDictionary("main-dictionary").spellcheck(word, suggestion);
sf.getDictionary("main-dictionary").spellcheck(word, suggestion, entity, properties...); //not sure how useful is this one really
sf.getDictionary("main-dictionary").reindex();
this needs to be refined.
--
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
13 years, 6 months
[Hibernate-JIRA] Created: (HHH-4098) VARBINARY should be BLOB in DB2400Dialect
by Christian Luebke (JIRA)
VARBINARY should be BLOB in DB2400Dialect
-----------------------------------------
Key: HHH-4098
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4098
Project: Hibernate Core
Issue Type: Improvement
Components: core
Affects Versions: 3.5.0.Beta-1
Environment: tested with hibernate 3.2.6ga, IBM DB2/400 on i5/os V5R4
Reporter: Christian Luebke
Priority: Minor
VARBINARY is registered in DB2Dialect (superclass of DB2400Dialect) as "varchar($l) for bit data". As DB2/400 (aka IBM DB2 for i) has a record length limitation of 32766 bytes, VARBINARY should be implemented as BLOB. Blobs are being stored outside the db record.
I successfully tried adding the following constructor in DB2400Dialect.java:
public DB2400Dialect() {
super();
registerColumnType( Types.VARBINARY, "blob($l)" );
}
As I'm not a hibernate user by myself, I can't provide a test case. I tried to get Bonita Workflow (http://www.bonitasoft.com/) to run with my DB2/400. It failed initially because of the usage of a 64 K varbinary. After patching DB2400Dialect to use a blob, everything worked fine.
--
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
13 years, 6 months
[Hibernate-JIRA] Created: (HHH-2697) Can't use := for variable assignment within a SQL-Statement
by Benjamin Gniza (JIRA)
Can't use := for variable assignment within a SQL-Statement
-----------------------------------------------------------
Key: HHH-2697
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2697
Project: Hibernate3
Issue Type: Bug
Affects Versions: 3.2.4.sp1
Environment: MySQL Datasource, Hibernate 3.2.4.sp1
Reporter: Benjamin Gniza
Priority: Minor
i found a kind of bug in org.hibernate.engine.query.ParameterParser.java:
I have an exotic mysql-statement where I want to use mysql variables.
VERY SIMPLE example:
SET @pos=0;
SELECT @pos:=@pos+1 FROM TABLE;
Steps to reproduce:
Session s = sessionFactory.openSession();
s.createSQLQuery("SET @pos=0").executeUpdate();
SQLQuery qry = s.createSQLQuery("select @pos:=@pos from SomeTable");
List lst = qry.list();
Exception:
org.hibernate.QueryException: Space is not allowed after parameter prefix ':' 'SELECT @pos:=@pos+1 FROM TABLE'
at org.hibernate.engine.query.ParameterParser.parse(ParameterParser.java:68)
...
...
Suggested fix:
ParameterParser Lines 62 to 73:
if (c == ':' && (indx + 1 >= stringLength || sqlString.charAt(indx + 1) != '=')) {
// named parameter
int right = StringHelper.firstIndexOfChar( sqlString, ParserHelper.HQL_SEPARATORS, indx + 1 );
int chopLocation = right < 0 ? sqlString.length() : right;
String param = sqlString.substring( indx + 1, chopLocation );
if ( StringHelper.isEmpty( param ) ) {
throw new QueryException("Space is not allowed after parameter prefix ':' '"
+ sqlString + "'");
}
recognizer.namedParameter( param, indx );
indx = chopLocation - 1;
}
--
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
13 years, 6 months
[Hibernate-JIRA] Created: (HHH-2165) Change logging level in TableMetadata from INFO to DEBUG or TRACE
by Igor A Tarasov (JIRA)
Change logging level in TableMetadata from INFO to DEBUG or TRACE
-----------------------------------------------------------------
Key: HHH-2165
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2165
Project: Hibernate3
Type: Improvement
Components: metamodel
Versions: 3.2.0.ga
Reporter: Igor A Tarasov
TableMetadata produce too many output to INFO log level. It good thing if it output be at DEBUG level to not hide other impotant information as service start/stop and other.
20.10.06 18:01:58 INFO [main]: SchemaUpdate - updating schema
20.10.06 18:01:58 INFO [main]: TableMetadata - table found: isp.ChageDO
20.10.06 18:01:58 INFO [main]: TableMetadata - columns: [id, _version, chagedate, created, service, sum, restbalance, comment, customer_id]
20.10.06 18:01:58 INFO [main]: TableMetadata - foreign keys: []
20.10.06 18:01:58 INFO [main]: TableMetadata - indexes: [id, fk8f40c06527214c11, chagedate, primary]
20.10.06 18:01:58 INFO [main]: TableMetadata - table found: isp.CustomerDO
20.10.06 18:01:58 INFO [main]: TableMetadata - columns: [phone, firm, group_id, deleted, fio, id, balance, created, updated, address, email, name, comment]
20.10.06 18:01:58 INFO [main]: TableMetadata - foreign keys: []
20.10.06 18:01:58 INFO [main]: TableMetadata - indexes: [id, primary, fk1892e50924b4a799, deleted]
20.10.06 18:01:58 INFO [main]: TableMetadata - table found: isp.GroupDO
20.10.06 18:01:58 INFO [main]: TableMetadata - columns: [id, updated, created, name, comment, deleted]
20.10.06 18:01:58 INFO [main]: TableMetadata - foreign keys: []
20.10.06 18:01:58 INFO [main]: TableMetadata - indexes: [id, primary, deleted]
20.10.06 18:01:58 INFO [main]: TableMetadata - table found: isp.HostDO
20.10.06 18:01:58 INFO [main]: TableMetadata - columns: [tarif_id, server_id, ips, mac, deleted, id, created, updated, name, lastactive, comment, disabled, customer_id]
20.10.06 18:01:58 INFO [main]: TableMetadata - foreign keys: []
20.10.06 18:01:58 INFO [main]: TableMetadata - indexes: [ips, name, primary, fk812f2053f280a3b1, mac, deleted, fk812f205327214c11, fk812f20537f1e2ff9]
20.10.06 18:01:58 INFO [main]: TableMetadata - table found: isp.HostSessionDO
20.10.06 18:01:58 INFO [main]: TableMetadata - columns: [id, host_id, starttime, chage, speedou, updatetime, speedin, bytesin, stoptime, bytesou, version]
20.10.06 18:01:58 INFO [main]: TableMetadata - foreign keys: []
20.10.06 18:01:58 INFO [main]: TableMetadata - indexes: [fk9a9074b995d39b51, id, primary]
20.10.06 18:01:58 INFO [main]: TableMetadata - table found: isp.LoginDO
20.10.06 18:01:58 INFO [main]: TableMetadata - columns: [id, nickname, updated, created, name, comment, password, deleted, customer_id, disabled]
20.10.06 18:01:58 INFO [main]: TableMetadata - foreign keys: []
20.10.06 18:01:58 INFO [main]: TableMetadata - indexes: [id, name, primary, fk77a0599427214c11, deleted]
20.10.06 18:01:58 INFO [main]: TableMetadata - table found: isp.PPPAccountDO
20.10.06 18:01:58 INFO [main]: TableMetadata - columns: [tarif_id, login_id, id, server_id, updated, created, comment, deleted, disabled, ip]
20.10.06 18:01:58 INFO [main]: TableMetadata - foreign keys: []
20.10.06 18:01:58 INFO [main]: TableMetadata - indexes: [id, fk507abf087f1e2ff9, primary, fk507abf08f280a3b1, fk507abf08820174d9, deleted]
20.10.06 18:01:58 INFO [main]: TableMetadata - table found: isp.PPPSessionDO
20.10.06 18:01:58 INFO [main]: TableMetadata - columns: [callerid, starttime, account_id, updatetime, speedou, chage, speedin, stoptime, bytesou, version, ip, id, ident, bytesin]
20.10.06 18:01:58 INFO [main]: TableMetadata - foreign keys: []
20.10.06 18:01:58 INFO [main]: TableMetadata - indexes: [id, fke19b413144f3fa61, starttime, ident, updatetime, primary, stoptime]
20.10.06 18:01:58 INFO [main]: TableMetadata - table found: isp.PaymentDO
20.10.06 18:01:58 INFO [main]: TableMetadata - columns: [id, _version, created, nalichka, sum, paydate, comment, newbalance, customer_id]
20.10.06 18:01:58 INFO [main]: TableMetadata - foreign keys: []
20.10.06 18:01:58 INFO [main]: TableMetadata - indexes: [id, fk7249f0f127214c11, primary, paydate]
20.10.06 18:01:58 INFO [main]: TableMetadata - table found: isp.ServerDO
20.10.06 18:01:58 INFO [main]: TableMetadata - columns: [id, updated, created, name, comment, deleted, ip]
20.10.06 18:01:58 INFO [main]: TableMetadata - foreign keys: []
20.10.06 18:01:58 INFO [main]: TableMetadata - indexes: [id, name, primary, deleted, ip]
20.10.06 18:01:58 INFO [main]: TableMetadata - table found: isp.TarifDO
20.10.06 18:01:58 INFO [main]: TableMetadata - columns: [costsizein, resetprepaidsize, prepaidsizerest, moncost, resetprepaidusages, costusage, resetprepaidtime, deleted, prepaidtimemonthly, costtime, prepaidsizemonthly, id, prepaidusagesrest, monthenddate, costsizeou, created, updated, name, prepaidtimerest, prepaidusagesmonthly, comment, customer_id]
20.10.06 18:01:58 INFO [main]: TableMetadata - foreign keys: []
20.10.06 18:01:58 INFO [main]: TableMetadata - indexes: [id, primary, fk7893f6d27214c11, deleted]
20.10.06 18:01:58 INFO [main]: SchemaUpdate - schema update complete
--
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
13 years, 6 months
[Hibernate-JIRA] Created: (ANN-677) Blob is null with Postgresql
by Aaron Luchko (JIRA)
Blob is null with Postgresql
----------------------------
Key: ANN-677
URL: http://opensource.atlassian.com/projects/hibernate/browse/ANN-677
Project: Hibernate Annotations
Issue Type: Bug
Affects Versions: 3.2.1
Environment: hibernate-3.2.1, hibernate-annotations-3.2.1, postgresql-8.2.5-1.fc7, postgresql-jdbc-8.2.504-1jpp.fc7 and postgresql-8.2-506.jdbc4.jar
Reporter: Aaron Luchko
Attachments: hibPostgresbug.zip
I've found that after a sequence of queries, starting new transactions and clearing the session, a Blob will not be successfully from the database and null will be returned by the InputStream instead. Using the debugger I've followed this into the jdbc code and from what I can tell some message is sent to load the blob but the database replies with an empty set of data which naturally causes the InputStream to read null.
I've attached a test case (sorry, no makefile or pom.xml, I just ran it using eclipse) which, for me, replicates the bug.
Note I've also used hsqldb and mysql and didn't see the bug with them, only postgresql.
thanks,
Aaron
--
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
13 years, 6 months
[Hibernate-JIRA] Created: (JPA-8) JPA Blob feature severely lacking! It does not support java.sql.Blob interface! Any fix in Hibernate JPA?
by Colbert Philippe (JIRA)
JPA Blob feature severely lacking! It does not support java.sql.Blob interface! Any fix in Hibernate JPA?
------------------------------------------------------------------------------------------------------------
Key: JPA-8
URL: http://opensource.atlassian.com/projects/hibernate/browse/JPA-8
Project: Java Persistence API
Issue Type: Improvement
Reporter: Colbert Philippe
My issue has to do with the Blob feature under JPA. The JPA standard documentation says that : (I quote) "The Java types mappled to BLOB columns are byte[], Byte[], Serializable type, while char[], Character[] and String are mapped to CLOB".
There is an important function missing in this statement. This feature is given by JDBC and made available in Hibernate Persistence. Why is it missing in JPA? The way JPA is implemented all BLOB objects are either not-loaded into memory or completely loaded into memory. What happens when an application only wants to work with only part of the BLOB object, not the entire BLOB object?
THE MISSING FEATURE:
JDBC and Hibernate, allow for declaration of fields of type java.sql.Blob (interface). This interface has special functionality that allows an application to load only part of a BLOB object (not the entire Blob object, which can be very big) . Similarly, the Blob interface allows an application to write to only part of BLOB object (not the entire BLOB object). These two important functions are lost in JPA! That's a severe drawback!
My question is: Is there a way of going around the JPA standard and allow support for java.sql.Blob columns?
Colbert
--
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
13 years, 6 months