Jer*_*sen 1 postgresql squeryl
当我尝试使用Squeryl的Table.insert在PostgreSQL表中插入新记录时,它会触发此查询:
insert into "users" ("id", "email", "fullname") values (nextval('"s_users_id"'),?,?)
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我没有定义序列,而是将id列定义为"autoincrement":
CREATE TABLE Users (
id BIGSERIAL,
email varchar(255) NOT NULL,
fullname varchar(255),
PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)
我在另一个论坛上读到了一些关于这个问题的老帖子,我想知道现在的状态.我们不鼓励使用自动增量并定义序列吗?或者有一个简单的解决方法来使这个工作?
编辑:事实上我刚才看到自动增量本身创建了一个序列,但是在另一个名称下:users_id_seq有没有办法告诉Squeryl看这个名字,或者遵循PostgreSQL的约定?
您可以声明序列的名称:
case class Author(id: Long, firstName: String)
val author = table[Author]
on(author)(s => declare(
s.id is(autoIncremented("your_seq_name"))
))
Run Code Online (Sandbox Code Playgroud)
更多信息:http://squeryl.org/schema-definition.html
目前还没有一种非常干净的方法,但是可以做到。只是子类PostgreSqlAdapter并重写:
def createSequenceName(fmd: FieldMetaData)
| 归档时间: |
|
| 查看次数: |
1620 次 |
| 最近记录: |