【发布时间】:2015-02-24 11:56:46
【问题描述】:
我正在使用 Grails 2.3.11。
我的域类使用 UUID 作为在 MySQL 中存储为二进制 (16) 的标识符。我为 Hibernate 使用了一个非常简单的自定义方言,并将其放在 src/java 中:
class CustomMysqlDialect extends MySQL5InnoDBDialect {
public CustomMysqlDialect() {
super();
registerColumnType(Types.BINARY,"binary(16)");
}
}
然后在域类中我可以使用
static mapping = {
id generator: 'uuid2',sqlType:'BINARY(16)'
...
}
除了grails shell 命令之外,所有这些都可以正常工作:
± |binary-uuid ✗| → grails shell
| Packaging Grails application.....
| Error Error executing script Shell:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'transactionManagerPostProcessor': Initialization of bean failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean
property 'sessionFactory'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'sessionFactory': Invocation of init method failed; nested exception is
org.hibernate.HibernateException: Could not instantiate dialect class (Use --stacktrace to see
the full trace)
就像 src/java 中的类不会被添加到类路径中一样。
grails 控制台运行良好,我可以轻松查询/创建/更新我的域类,但我真的很怀念 shell 的交互性...
我也尝试将该类放入 grails-app/utils 中,但它并没有改变任何东西...
有什么想法吗?
【问题讨论】:
标签: hibernate grails grails-orm