see org.hibernate.test.annotations.embeddables.EmbeddableIntegratorTest

this test is using Integrator to registerTypeOverride, in the middle of SF 
initializing, after Configuration / Metadata built. 
so, firstly I want to confirm if this is an expected use case of Integrator, 
since at this time, the metadata is supposed to resolved, and no way to apply 
the new overrided types.

( This test passes w/ Configuration, since the attribute type is delayed to the 
persister initialize time, and the Value holds a reference of 
org.hibernate.cfg.Configuration.MappingsImpl, which holds a reference to the 
Configuration#typeResolver.

but this also doesn't sound right, since SF also has a typeResolver, which is a 
copy of Configuration#typeResolver, and it is copied before the Integrator 
applied. )

the process looks like:

1. Configuration creates a new instance of TypeResolver and load default types 
( including dialect overrided types and 
org.hibernate.metamodel.spi.TypeContributions )
2. SF create a new instance of TypeResolver and copy all types from 
Configuration.typeResolver

3. apply integrator and add/override new types to the 
Configuration.typeResolver, here we get mismatch between SF.typeResolver and 
Configuration.typeResolver

I checked the git history / JIRA and trying to find the background of this 
test, but nothing.

if you guys confirm this is not a valid use case, then I'd suggest:

1. give Integrator a better name and clearly add something to the (java) doc 
say the expect usage of this Integrator ( maybe DO NOT TRY TO CHANGE THE STATE 
OF METADATA / CONFIGURATION AT THIS SATGE?)

2. move the IntegratorService to the SessionFactoryServiceRegistry?



-------------------------
Best Regards,

Strong Liu <stliu at hibernate.org>
http://about.me/stliu/bio



_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to