- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力将一条记录插入到 postgresql 中:
val res = DB.withConnection {
implicit con =>
SQL(
"""INSERT INTO
my_table(id, user_id, file_name, added_at)
VALUES(DEFAULT, {userId}, {fileName}, {currentTime})
RETURNING id
""")
.on("userId" -> 1, "fileName" -> "fileName1", "currentTime" -> new java.sql.Timestamp(DateTime.now.getMillis))
.executeInsert()
}
Ok(toJson(JsObject(Seq("res" -> JsString(res.toString)))))
它确实插入了一个值(我可以通过 pdAdmin 看到)但它最终返回一个错误 ERROR: syntax error at or near "RETURNING"
。
如果我删除 RETURNING id
然后错误变为 TypeDoesNotMatch(Cannot convert requestBody4050249427671619471asTemporaryFile :class java.lang.String to Long for column ColumnName(my_table.file_name,Some(file_name))) ]]
当我切断 id
和 DEFAULT
时,错误保持不变。
my_table
定义为
CREATE TABLE my_table
(
file_name character(255),
user_id integer,
added_at timestamp without time zone,
id serial NOT NULL,
CONSTRAINT my_table_pk PRIMARY KEY (id),
CONSTRAINT scan_fk FOREIGN .....
)
这是为什么呢?它与 file_name
有什么关系?
最佳答案
给定这张表:
CREATE TABLE my_table
(
file_name character(255),
user_id integer,
added_at timestamp without time zone,
id serial NOT NULL,
CONSTRAINT my_table_pk PRIMARY KEY (id)
);
您可以像这样插入记录并检索其 ID:
package dao
import anorm._
import anorm.SqlParser._
import play.api.db.DB
import play.api.Logger
import play.api.Play.current
object MyDAO {
def insert(fileName: String, userId: Int): Int = {
val sql = SQL(
"""
insert into my_table(file_name, user_id, added_at)
values ({fileName}, {userId}, CURRENT_TIMESTAMP)
returning id
""")
.on(
"fileName" -> fileName,
"userId" -> userId)
DB.withConnection { implicit c =>
val id = sql.as(scalar[Int].single)
Logger.info(s"Inserted '$fileName' with id '$id'.")
id
}
}
}
然后像这样测试它:
import org.junit.runner._
import org.specs2.mutable._
import org.specs2.runner._
import play.api.test._
import play.api.test.Helpers._
import dao.MyDAO
@RunWith(classOf[JUnitRunner])
class MyDAOSpec extends Specification {
"MyDAO" should {
"insert a record and return its id" in new WithApplication {
val id = MyDAO.insert("file1", 101)
id must be_>=(0)
}
}
}
参见 Anorm, simple SQL data access有关如何从结果集中检索数据的更多示例。
关于postgresql - 我正在努力从 Play 中的 postgresql 取回 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20754276/
我正在尝试为我的项目创建一些单元测试,经过大量挖掘之后,我发现了Effort,这个想法很棒,它模拟数据库而不是处理伪造的DBContext,顺便说一句,很难做到正确使用复杂的架构。 但是,我将用户的电
我正在尝试对某些响应 Entity Framework 数据库上下文的类进行单元测试。为了寻求帮助,我设法找到了一个名为 Effort 的库,它似乎有点旧,而且没有很好的文档记录,但它似乎可以工作,而
这两天,Auto-GPT 爆火 https://github.com/Torantulino/Auto-GPT 它是一款让最强语言模型GPT-4能够自主完成任务的模型,让整个AI圈疯
为什么会出现这个异常?这是错误吗? 我正在使用 EF 测试库 Effort 创建我的数据库的内存实例并遇到这个有趣的场景: 打开DbContext1 将项目添加到表(不保存) 关闭DbContext1
我是一名优秀的程序员,十分优秀!