[hibernate-issues] [Hibernate-JIRA] Created: (HHH-2754) Inner classes in methods cannot be used in select clause when with conjunction with "typesafe Java object" mechanism
Adam Wozniak (JIRA)
noreply at atlassian.com
Sun Jul 29 13:04:39 EDT 2007
Inner classes in methods cannot be used in select clause when with conjunction with "typesafe Java object" mechanism
--------------------------------------------------------------------------------------------------------------------
Key: HHH-2754
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2754
Project: Hibernate3
Issue Type: New Feature
Affects Versions: 3.2.4.sp1
Reporter: Adam Wozniak
Hello
Here in the documentation to Hibernate Core:
http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#queryhql-select
... we have a following example:
select new Family(mother, mate, offspr)
from DomesticCat as mother
join mother.mate as mate
left join mother.kittens as offspr
But this mechanism doesn't work when Family class is defined as inner class in a method.
So when I wrote something like this:
void myBusinessMethod()
{
class Family3
{
private String rowid;
private long coId;
private int csSeqno;
public Family3()
{
//
}
@SuppressWarnings("unused")
public Family3(
final String rowid
, final long coId
, final int csSeqno
)
{
//System.out.println("ssss");
this.rowid = rowid;
this.coId = coId;
this.csSeqno = csSeqno;
}
}
... and within this method I'm trying to do this:
query = sess.createQuery(
"select new typesafe_Java_object.TypesafeJavaObjectEMRWTest$1Family3(t.id, t.coId, t.csSeqno) from BSCSCgTaroptLog t");
list = query.list();
... then I'm slapped by a following exception:
org.hibernate.hql.ast.QuerySyntaxException: Unable to locate appropriate constructor on class [typesafe_Java_object.TypesafeJavaObjectEMRWTest$1Family3] [select new typesafe_Java_object.TypesafeJavaObjectEMRWTest$1Family3(t.id, t.coId, t.csSeqno) from pl.capgemini.tme.bonobo.model.BSCSCgTaroptLog t]
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)
(...)
So the question is:
Is it possible to add another method to org.hibernate.Session:
public Query createQuery(String queryString, FactoryType factoryToGenerateMyInnerEntities)
???
Why do I need such mechanism? I rewriting a legacy system (Oracle PL/SQL) and I have many different HQL queries. To use "typesafe Java object" I must make my mediate classes static. But then I would have a kind of class bloat. And this is the reason why I would like to hide those classes and make them much more locally (for example inside my one single java method).
Kind regards,
Adam Wozniak
--
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