SQL非常简单:
CREATE TYPE audit_fields AS (
creation_time_ms BIGINT
);
CREATE TABLE users(
...
audit AUDIT_FIELDS NOT NULL
);
这是我试图这样做的两种方式:
UsersRecord getRecord() {
return new UsersRecord()
.setSomeField(...)
.setOtherField(...)
.setAudit(new AuditFieldsRecord(System.currentTimeMillis()));
}
create.insertInto(Tables.USERS)
.set(getRecord())
.execute();
而且,这个:
create.insertInto(Tables.USERS)
.set(getRecord())
.set(Tables.USERS.AUDIT, new AuditFieldsRecord(System.currentTimemillis()))
.execute();
我只是得到一个StackOverflowError
,其中以下块重复(显然是无限递归):
at org.jooq.impl.UDTConstant.<init>(UDTConstant.java:62)
at org.jooq.impl.DSL.val(DSL.java:12781)
at org.jooq.impl.DSL.val(DSL.java:12732)
at org.jooq.impl.DSL.inline(DSL.java:12590)
at org.jooq.impl.UDTRecordImpl.toString(UDTRecordImpl.java:141)
at java.lang.String.valueOf(String.java:2994)
at org.jooq.impl.AbstractParam.name(AbstractParam.java:104)
at org.jooq.impl.AbstractParam.<init>(AbstractParam.java:78)
at org.jooq.impl.AbstractParam.<init>(AbstractParam.java:74)
at org.jooq.impl.UDTConstant.<init>(UDTConstant.java:62)
at org.jooq.impl.DSL.val(DSL.java:12781)
at org.jooq.impl.DSL.val(DSL.java:12732)
at org.jooq.impl.DSL.inline(DSL.java:12590)
at org.jooq.impl.UDTRecordImpl.toString(UDTRecordImpl.java:141)
at java.lang.String.valueOf(String.java:2994)
at org.jooq.impl.AbstractParam.name(AbstractParam.java:104)
at org.jooq.impl.AbstractParam.<init>(AbstractParam.java:78)
at org.jooq.impl.AbstractParam.<init>(AbstractParam.java:74)
at org.jooq.impl.UDTConstant.<init>(UDTConstant.java:62)
at org.jooq.impl.DSL.val(DSL.java:12781)
at org.jooq.impl.DSL.val(DSL.java:12732)
at org.jooq.impl.DSL.inline(DSL.java:12590)
at org.jooq.impl.UDTRecordImpl.toString(UDTRecordImpl.java:141)
at java.lang.String.valueOf(String.java:2994)
at org.jooq.impl.AbstractParam.name(AbstractParam.java:104)
at org.jooq.impl.AbstractParam.<init>(AbstractParam.java:78)
at org.jooq.impl.AbstractParam.<init>(AbstractParam.java:74)
at org.jooq.impl.UDTConstant.<init>(UDTConstant.java:62)
知道我做错了吗?
答案 0 :(得分:1)
这是旧版Jooq 3.7.0中存在的问题。对于使用该版本且无法轻松迁移到较新版本的项目,此问题可能是一个起点,因此我不投票关闭它(如果他们认为合适,还会请求其他人)。
升级到更高版本的jooq可以解决此问题。