[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-6927) Cannot register a type through configuration if the type is parametrized
Steve Ebersole (JIRA)
noreply at atlassian.com
Fri Dec 30 12:32:19 EST 2011
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-6927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=44783#comment-44783 ]
Steve Ebersole commented on HHH-6927:
-------------------------------------
You don't have to put it in each class.
Type defs defined in an hbm.xml are globally available.
I believe @TypeDef is scoped, however you can define @TypeDefs at package level as well.
If you would really like a means to register a type def with configuration, then open a *feature request*, but this is clearly not a bug.
> 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
More information about the hibernate-issues
mailing list