我有一张有顺序的简易桌. 当我在INSERTINT.SET方法中使用Sequence.nextval()时,一切正常. 当我在intertInto.Values方法中使用equence.nextval()时,只使用Sequence,再次指定end就可以了. 当我在INSERTINT.VALUES方法中使用Sequence.nextval()时,如果使用的不是Sequence,则会出现错误.

这样就可以了


        int w = dslContext
                .insertInto(APPOINTMENTTYPE)
                .set(APPOINTMENTTYPE.MC, 501559436L)
                .set(APPOINTMENTTYPE.ID, HIBERNATE_SEQUENCE.nextval())
                .set(APPOINTMENTTYPE.NAME, "test name")
                .set(APPOINTMENTTYPE.DESCRIPTION, "test description")
                .set(APPOINTMENTTYPE.BLUE, 255)
                .set(APPOINTMENTTYPE.GREEN, 255)
                .set(APPOINTMENTTYPE.RED, 255)
                .set(APPOINTMENTTYPE.REMINDERINTERVAL, 1)
                .execute();

这也可以.


        int x = dslContext.insertInto(APPOINTMENTTYPE, 
APPOINTMENTTYPE.ID).values(APPOINTMENTTYPE_SEQ.nextval()).execute();

这会产生错误Cannot resolve method 'values(Field<Long>, int)'


        int y = dslContext.insertInto(APPOINTMENTTYPE, APPOINTMENTTYPE.ID, APPOINTMENTTYPE.BLUE).values(APPOINTMENTTYPE_SEQ.nextval(), 255).execute();

推荐答案

values()子句只有两组重载:

  • 其中所有参数都是绑定值,即values(T1, T2, ...)
  • 其中所有参数都是表达式,即values(Field<T1>, Field<T2>, ...)

如果要支持绑定值和表达式的任意组合,我们很快就会在一个已经很大的API中获得令人望而却步的(指数级)组合数量.

因此,在您的例子中,您只需显式地使用DSL.val()来包装您的绑定值,即DSL.val(255).即如下所示:

int x = dslContext
    .insertInto(APPOINTMENTTYPE, APPOINTMENTTYPE.ID, APPOINTMENTTYPE.BLUE)
    .values(APPOINTMENTTYPE_SEQ.nextval(), DSL.val(255))
    .execute();

另见:

这一限制显然不会影响具有固定参数集的方法,例如set()

Java相关问答推荐

我可以在regex中的字符类中放置断言吗?

BiPredicate和如何使用它

CSS应用于一个端点,但不应用于Thymeleaf中的另一个端点

屏蔽字母数字代码的Java正则表达式

替换com. sun. jndi. dns. DnsContextFactory Wildfly23 JDK 17

现场观看Android Studio中的变化

对运行在GraalVM-21上的JavaFX应用程序使用分代ZGC会警告不支持JVMCI,为什么?

在Spring Boot应用程序中导致";MediaTypeNotSupportdException&qot;的映像上载

如何从JNI方法正确调用NSOpenPanel以在正确的线程上运行?

Jenv-相同的Java版本,但带有前缀

Java中将文本拆分为数字或十进制数字和字符串

使用多个RemoteDatabase对象的一个线程

如何用内置Java从JavaFX应用程序中生成.exe文件?

STREAMS减少部分结果的问题

带有可选部分的Java DateTimeForMatter

为什么没有加载java.se模块?

如何在特定关键字后提取与模式匹配的多个值?

MapStruct记录到记录的映射不起作用

窗口启动后不久,从java.awt.Graphics disapear创建的矩形

Java 8 中 ByteBuffer 和 BitSet 的奇怪行为