来自 table 的 OrmLite upsert

OrmLite upsert from table

目前 Save() API 在传入集合时提供 upsert 行为,但在从另一个 table 插入时是否仍能正常工作?

我使用原始 PostgreSQL 更新插入的方式是这样的:

INSERT INTO customers (name, email)
SELECT name, email FROM other_table
ON CONFLICT (name) 
DO 
   UPDATE SET email = EXCLUDED.email;

OrmLite 支持 ON CONFLICT,但我看不出有什么方法可以使用 EXCLUDED 将其链接到更新中。

有没有办法在不将集合读入内存的情况下使用 fluent API 实现此类功能?

OrmLite 中没有对此的类型化 API 支持,并且可能不会,因为几乎不可能提供良好的类型化跨平台抽象来处理支持 Upsert 的 RDBMS 中此功能的不同功能和排列.

您将不得不使用 OrmLite Custom SQL APIs which you can use with OrmLite's typed Column<T> and Table<T> APIs 执行您想要的 Upsert SQL 查询,以在临时 SQL.[= 中包含类型化 Table 和列引用13=]