我找到了一个不同的解决方案,它不像每个KEY
. 我生成一个大致如下所示的类:
public class References {
// First, initialise all unique keys
public static final UniqueKey<TAuthorRecord> SysPk_14655 =
createUniqueKey(TAuthor.T_AUTHOR, TAuthor.ID);
// Then initialise all foreign keys
public static final Reference<TBookRecord, TAuthorRecord> SysFk_14666 =
createReference(SysPk_14655, TBook.T_BOOK, TBook.AUTHOR_ID);
public static final Reference<TBookRecord, TAuthorRecord> SysFk_14667 =
createReference(SysPk_14655, TBook.T_BOOK, TBook.CO_AUTHOR_ID);
// Factory method for unique keys
protected static <R extends Record> UniqueKey<R>
createUniqueKey(Table<R> table, TableField<R, ?>... fields) {
// Factory method for foreign keys referencing unique keys
protected static <R extends Record, U extends Record> Reference<R, U>
createReference(UniqueKey<U> key, Table<R> table, TableField<R, ?>... fields) {
}
然后,生成的表类中的实际表可以引用和使用上述键。根据BobG在他的一条评论中的建议,我查看了 JPA 注释。但我发现它们描述起来不是很有用:
- 多字段键(
@IdClass
需要一个类型作为参数,我想避免这种类型)
- 多字段引用(怎么做?)
- 使用不同的键从一个表到另一个表的多个引用
- 唯一键,与主键共享许多属性。
一些评论提到了为什么我应该创建这样一个生成器,因为有很多已建立的框架。我这样做是为了http://www.jooq.org。而且我觉得 jOOQ 正在填补当今数据库抽象可能性方面的空白。