[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-6927?page=c...
]
Steve Ebersole updated HHH-6927:
--------------------------------
Component/s: metamodel
Issue Type: New Feature (was: Bug)
Summary: Allow registering type defs via Configuration (was: Cannot register a
type through configuration if the type is parametrized)
Stephane, I went ahead and just converted this issue to a RFE. If you do not really care
about this or do not really want it go ahead and close this issue.
Allow registering type defs via Configuration
---------------------------------------------
Key: HHH-6927
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-6927
Project: Hibernate Core
Issue Type: New Feature
Components: core, metamodel
Affects Versions: 3.6.5
Reporter: Stephane Nicoll
Since I don't want to hardcode @TypeDefs in each class hierarchy that uses a custom
type, I am using the {{cfg.registerTypeOverride}} method. This works fine for simple user
type but I have a parameterized user type.
In that case, using this method leads to a single user type instance being used and
shared for all my entities and no parameter is injected at all. Looking a bit deeper I
think I found the culprit in TypeResolver.
{code:java}
public Type heuristicType(String typeName, Properties parameters) throws MappingException
{
Type type = basic( typeName );
if ( type != null ) {
return type;
}
try {
Class typeClass = ReflectHelper.classForName( typeName );
if ( typeClass != null ) {
return typeFactory.byClass( typeClass, parameters );
}
}
catch ( ClassNotFoundException ignore ) {
}
return null;
}
{code}
base(typeName) will actually return the type that I have registered. Notice that basic
does not take the {{parameters}} argument into account. Since it's not null it just
returns that type.
Maybe I did something wrong. I was surprised that cfg actually registers *instances* and
not classes. Both @TypeDefs and hbm.xml specifies classes. Maybe adding an option to
register a class programmatically?
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira