Grails Hibernate自定义标识符生成器Oracle 11g

Grails Hibernate自定义标识符生成器Oracle 11g,hibernate,grails,gorm,Hibernate,Grails,Gorm,我在一个域类中有一个Id,它是一个varchar,并且有一个序列。我实现了一个自定义生成器,并将其添加到域类Id列的映射中 id column:"col_id",generator:"packagename.classname" 但是,我的IdentifierGenerator需要一个数据源引用。当我为持久化对象进行集成测试时,会在将数据源注入生成器类之前调用id的generate方法。有人有工作示例吗?我没有解决方案,但我想知道如何注入数据源?查看hibernate代码,生成器是通过调用类上

我在一个域类中有一个Id,它是一个varchar,并且有一个序列。我实现了一个自定义生成器,并将其添加到域类Id列的映射中

id column:"col_id",generator:"packagename.classname"

但是,我的IdentifierGenerator需要一个数据源引用。当我为持久化对象进行集成测试时,会在将数据源注入生成器类之前调用id的generate方法。有人有工作示例吗?

我没有解决方案,但我想知道如何注入数据源?查看hibernate代码,生成器是通过调用类上的newInstance创建的,而不是通过spring…我们不能从资源中注入数据源吗?groovy?通常是的,但hibernate不使用spring创建生成器对象,这意味着没有自动注入。。。您可以在generate方法中使用Holders.applicationContext.getBean“dataSource”来获取数据源。这有点难看,但可能有用。哦,这很有意义。我可以注入依赖项,但在自定义生成器中设置依赖项之前将调用generate方法。对吗?不,hibernate完全绕过spring调用生成器类上的newInstance。在这种情况下,spring没有机会注入数据源。例如,如果将生成器注入另一个Springbean服务中,spring将创建生成器对象并设置数据源。