[
http://opensource.atlassian.com/projects/hibernate/browse/METAGEN-29?page...
]
Andy Schlaikjer commented on METAGEN-29:
----------------------------------------
bq. The generated meta class AbstractEntity_ should use the upper bound of T for the
property. In the example SingularAttribute<AbstractEntity, Object>.
I think there's another wrinkle to this bug-- Within {{Person_}}, shouldn't the
{{foo}} attribute be redefined to match {{SingularAttribute<Person, String>}} based
on {{Person}}'s assignment of {{String}} to {{AbstractEntity}}'s type parameter?
Otherwise, in cases where {{foo}} is something more complex, like an Embeddable type, you
can't use the generated metamodel to reference components of {{Person_.foo}}.
Here's a more complete example:
First, we have an Embeddable value type {{Foo}}:
{noformat}
@Embeddable
public class Foo {
private String name;
}
{noformat}
Now, a parameterized base class {{Base<T>}}:
{noformat}
@MappedSuperclass
public abstract class Base<T> {
private T value;
}
{noformat}
And a refinement of {{Base<T>}}, specifying {{Foo}} as its type parameter:
{noformat}
@Embeddable
public class Fooed extends Base<Foo> {
}
{noformat}
Now, what should our metamodel types be? {{Foo}} is straight-forward:
{noformat}
@StaticMetamodel(Foo.class)
public abstract class Foo_ {
public static volatile SingularAttribute<Foo, String> name;
}
{noformat}
{{Base_}} would look something like this:
{noformat}
@StaticMetamodel(Base.class)
public abstract class Base_ {
public static volatile SingularAttribute<Base, Object> value;
}
{noformat}
and {{Fooed_}} might look like this:
{noformat}
@StaticMetamodel(Fooed.class)
public abstract class Fooed_ extends Base_ {
public static volatile SingularAttribute<Fooed, Foo> value;
}
{noformat}
With {{hibernate-jpamodelgen 1.1.1.Final}}, {{Fooed_}} doesn't get a new definition
for {{value}}, which, as far as I can tell, prevents us from creating criteria paths from
{{Fooed_.value}} to {{Foo_.name}}.
Embedded generic types not supported by metamodel generator
-----------------------------------------------------------
Key: METAGEN-29
URL:
http://opensource.atlassian.com/projects/hibernate/browse/METAGEN-29
Project: Hibernate Metamodel Generator
Issue Type: Bug
Components: processor
Affects Versions: 1.0.0-CR-1
Environment: Hibernate 3.5.0-CR-2
Reporter: Adrian Hummel
Priority: Critical
Fix For: 1.1.0.CR1
Attachments: bugreport.zip
Scenario: I have a @MappedSuperclass defining an abstract entity. This class has a
technical primary key and a business identity. The business identity is realized by means
of a generic embeddable (e.g. for a Customer class there is a corresponding CustomerId
class for its business identity).
The JPAMetaModelEntityProcessor does generate the AbstractEntity_ class but does only
include the primary key field but omits the generic field for the business identity (which
leads to subsequent errors when accessing this field using a CriteriaBuilder).
Attached a mini project with a test case which illustrates the problem.
--
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