scala - 使用H2数据库时在Quill中执行插入或更新操作时发生编译错误

标签 scala compiler-errors h2 insert-update quill

使用H2数据库时,是否可以在Quill中执行插入或更新操作?如果我添加到.insert操作.onConflictIgnore,则会出现编译错误:

[error] [...]/repository/HeadlinesRepository.scala:41:36: exception during macro expansion: 
[error] java.lang.IllegalStateException: Action ast can't be translated to sql: 'querySchema("headlines").insert(v => v.link -> ?, v => v.title -> ?).onConflictIgnore'
[error]         at io.getquill.util.Messages$.fail(Messages.scala:15)
[error]         at io.getquill.context.sql.idiom.SqlIdiom.$anonfun$actionTokenizer$1(SqlIdiom.scala:387)
[error]         at io.getquill.idiom.StatementInterpolator$Tokenizer$$anon$1.token(StatementInterpolator.scala:17)
[error]         at io.getquill.idiom.StatementInterpolator$TokenImplicit.token(StatementInterpolator.scala:27)
[error]         at io.getquill.context.sql.idiom.SqlIdiom.$anonfun$astTokenizer$1(SqlIdiom.scala:57)
[error]         at io.getquill.idiom.StatementInterpolator$Tokenizer$$anon$1.token(StatementInterpolator.scala:17)
[error]         at io.getquill.context.sql.idiom.SqlIdiom$$anon$1.token(SqlIdiom.scala:49)
[error]         at io.getquill.context.sql.idiom.SqlIdiom$$anon$1.token(SqlIdiom.scala:46)
[error]         at io.getquill.idiom.StatementInterpolator$TokenImplicit.token(StatementInterpolator.scala:27)
[error]         at io.getquill.context.sql.idiom.SqlIdiom.translate(SqlIdiom.scala:39)
[error]         at io.getquill.context.sql.idiom.SqlIdiom.translate$(SqlIdiom.scala:23)
[error]         at io.getquill.H2Dialect$.translate(H2Dialect.scala:20)
[error]         at io.getquill.context.ContextMacro.translateStatic(ContextMacro.scala:51)
[error]         at io.getquill.context.ContextMacro.translate(ContextMacro.scala:37)
[error]         at io.getquill.context.ContextMacro.expand(ContextMacro.scala:24)
[error]         at io.getquill.context.ContextMacro.expand$(ContextMacro.scala:21)
[error]         at io.getquill.context.ActionMacro.expand(ActionMacro.scala:10)
[error]         at io.getquill.context.ActionMacro.expandBatchAction(ActionMacro.scala:121)
[error]         at io.getquill.context.ActionMacro.runBatchAction(ActionMacro.scala:71)

最佳答案

似乎没有。

insert or update (upsert, conflict)

Upsert is supported by Postgres, SQLite, and MySQL


https://github.com/getquill/quill

关于scala - 使用H2数据库时在Quill中执行插入或更新操作时发生编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56504596/

相关文章:

programming-languages - 其他支持隐式“a Scala”的编程语言

java - Java中的二进制搜索代码无法运行

java - Spring H2 嵌入式数据库

java - H2 数据存储 : how to execute console from Java app?

scala - 谁能解释一下这是什么意思

scala - Spark 读取 Open Street Map 数据并选择条目

c++ - 为什么编译器不显示这些返回类型的错误?

java - 无法真正找到此代码中的错误是什么

mysql - 使用 DISTINCT 关键字将 GROUP_CONCAT 查询从 MySQL 转换为 H2 很困难

scala - 更改 fs2.Stream 的效果类型