我试图使用JOOQ和Jackson将JSON列写入MySQL,但我不知道为什么它不是序列化为JSON,而是作为toString表示.
以下是我为其生成JOOQ定义的表:
create table JsonPayload
(
name varchar(127) primary key,
rules JSON not null,
defaultValue tinyint(1) default 0 not null
);
这是我想绑定模型的类.
data class RuleTest(val name: String, val test: Boolean)
data class Rule(val name: String, val test: Boolean, val rule: RuleTest)
data class JsonPayload(val name: String, val rules: List<Rule>, val defaultValue: Boolean)
插入代码:
dsl.insertInto(JSONPAYLOAD)
.set(dsl.newRecord(
JSONPAYLOAD,
JsonPayload(
"Test",
listOf(Rule("rule1", false, RuleTest("rule1", false)),
Rule("rule2", true, RuleTest("rule1", false))),
true
)
))
.execute()
它可以很好地进行序列化和反序列化,但无法将正确的JSON写入MySQL:
mysql> select * from JsonPayload;
+------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------+
| name | rules | defaultValue |
+------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------+
| Test | ["Rule(name=rule1, test=false, rule=RuleTest(name=rule1, test=false))", "Rule(name=rule2, test=true, rule=RuleTest(name=rule1, test=false))"] | 1 |
+------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------+
这是我为演示这种行为而创建的演示项目https://github.com/v1ctor/jooq-json-demo
你能帮助我理解如何将正确的Json写入MySQL吗?