我有一个具有许多成员变量的域类。假设它看起来像这样:
class Foo {
String BARID
int NUM1
}
当我尝试持久化对象时,Hibernate 抛出异常(“org.springframework.orm.hibernate3.HibernateSystemException:为类提供错误类型的 id”)抱怨我的 Id 应该是 Long 类型而不是 String ...但我不希望 BARID 实际上是表中的一个 id,它只是出于不相关的原因以这种方式命名。为了下游兼容性(其他程序要求将其称为 BARID),我需要该变量在对象和数据库中都显示为 BARID。
显然,hibernate 试图在幕后花哨并找出哪些字段是 id。我如何告诉 hibernate 与它的想法相反,这不是一个 id 字段?
更新:我意识到变量大小写是非标准的,但我更愿意保持原样,除非这就是它被破坏的原因。(为了记录,我尝试切换到所有小写的“barid”,我得到了完全相同的例外)。
解决方案:我使用了 Jeff 建议的明确定义映射块的解决方案:
static mapping = {
id generator: 'increment'
}