[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-6927?page=c...
]
Steve Ebersole commented on HHH-6927:
-------------------------------------
A clarification...
Type defs defined in an hbm.xml are globally available but you must make sure to add that
hbm.xml to the Configuration before you add any other hbm.xmls or annotated entities that
use those type defs.
Cannot register a type through configuration if the type is
parametrized
------------------------------------------------------------------------
Key: HHH-6927
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-6927
Project: Hibernate Core
Issue Type: Bug
Components: core
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