【发布时间】:2016-01-12 02:19:59
【问题描述】:
在代码中,通过UUID post_uuid = uuidGenerator.generate()生成一个UUID,然后插入到mysql中。
Connection conn = sql2o.beginTransaction();
UUID postUuid = uuidGenerator.generate();
conn.createQuery("insert into posts(post_uuid, title, content, publishing_date) values (:post_uuid, :title, :content, :date)")
.addParameter("post_uuid", postUuid.toString())
.addParameter("title", title)
.addParameter("content", content)
.addParameter("date", new Date())
.executeUpdate();
categories.forEach(category ->
conn.createQuery("insert into posts_categories(post_uuid, category) VALUES (:post_uuid, :category)")
.addParameter("post_uuid", postUuid.toString())
.addParameter("category", category)
.executeUpdate());
conn.commit();
return postUuid;
RandomUuidGenerator 类
public class RandomUuidGenerator implements UuidGenerator{
@Override
public UUID generate() {
// TODO Auto-generated method stub
return UUID.randomUUID();
}
}
在mysql中,post_uuid的字段是CHAR(36)
运行代码的时候报错
错误指向第二个插入sql addParameter("category", category).executeUpdate())
【问题讨论】:
-
应该
post_uuid.toString()转成字符串? -
你是如何生成你的 uuid 的?另外你为什么使用 uuids 而不是整数?
-
我只是在上面发布了 RandomUuidGenerator。这是 SparkJava 的教程,我在使用 Postgresql 时从 MySql 更改数据库