2

我正在尝试使用 Cayenne Entity Manager 将对象持久保存到数据库中。不幸的是,我收到以下错误:

org.apache.cayenne.CayenneRuntimeException: [v.3.0 Apr 26 2010 09:59:17] Commit Exception

Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'myDatabase.auto_pk_support' doesn't exist

知道如何解决这个问题吗?谢谢。

4

1 回答 1

4

在您出现错误的情况下,在我看来,您从 Cayenne Modeler 中选择了“默认”“PK 生成策略”(单击您的 DB 实体以查看具有该选项的组合框)。这意味着 Cayenne 期望您的模式中存在一个填充的“auto_pk_support”表(以便能够生成和跟踪主键)。

Cayenne Modeler 可以为您生成此表 + 内容:从 Tools 菜单中选择“Generate DB Schema”,选择正确的连接,然后从下一个对话框中仅选择“Create PK Support”复选框: - 您将看到所需的 SQL生成它 - 您可以将其复制并粘贴到您喜欢的 SQL 工具中,或者让 Cayenne Modeler 运行它。

由于您使用的是 MySQL,因此您当然还有其他 PK 生成选项(以上是经典/默认选项,适用于任何数据库 - 但需要额外的表)。

我建议查阅Cayenne Modeler 文档,或者更好地查阅整个 cayenne 文档(因为它非常好),因为上述所有项目都在那里得到了很好的解释。

于 2010-07-08T08:38:15.850 回答