我在数据库中有一个名为FOO_ID
的ID的项目(对于表FOO
)。我发现在Java中定义一个名为FooId
的小类包装实际值很方便,并将FOO_ID
列的类型映射到Java中的FooId
。这样可以更好地进行类型检查,因为我不会在编译器给出错误的情况下不小心将“foo id”写入“bar id”列。
在新项目中,所有ID列在每个表中都被称为ID
。我无法更改数据库架构,这是我的唉。我希望<forcedType>
能够在名为'FOO'的表中匹配“名为'ID'的列,但是现在我看不出怎么做,我认为不可能。
除了列名之外,是否可以根据表名约束<forcedType>
?如果是这样,语法是什么?
提前致谢!
答案 0 :(得分:1)
这个想法已经在jOOQ mailing list上讨论了几次,并且还有一个待处理的功能请求,它会添加对特殊生成密钥类型的支持:#6124。
除了您的建议外,外键类型应与其引用的主键类型相匹配。这些类型的挑战是使其适用于所有边缘情况,包括:
虽然这肯定是一个有趣的功能,但它尚未在jOOQ 3.9中提供。
您可以通过以下方式自行解决此限制:
JavaGenerator
以便为每个主键/外键生成您自己的类型<forcedType/>
替换您自己生成的类型的所有单列键类型最好通过使用程序代码生成配置来完成 - 否则你会输入相当多的XML(当然,你也可以使用XSLT来生成配置)。