首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA2.0/ EclipseLink和sqlit3.7.2-无法创建表

JPA2.0/ EclipseLink和sqlit3.7.2-无法创建表
EN

Stack Overflow用户
提问于 2012-09-18 17:03:03
回答 1查看 4K关注 0票数 3

我想在一个简单的Java应用程序中使用EclipseLink (2.4.0)和sqlit3.7.2的JPA2.0。

我遇到的第一件事是,EclipseLink不支持sqlite。这是输出:

EL信息: 2012-09-18 18:05:42.246--ServerSession(31125695)--EclipseLink,版本: Eclipse持久性服务- 2.4.0.v20120608-r11652 EL信息:连接: 2012-09-18 18:05:42.352--无法检测到供应商名称SQLite3的平台。默认为org.eclipse.persistence.platform.database.DatabasePlatform.使用的数据库方言可能与所使用的数据库不匹配。请使用属性eclipselink.platform.class.name显式提供一个平台。

然而,在我看来,配置几乎可以正常工作。

但是,当我有一个具有相关实体(即@ManyToOne)的模型时,不能自动创建表。

EL警告: 2012-09-18 18:05:42.629--ServerSession(31125695)--Exception EclipseLink-4002:org.eclipse.persistence.exceptions.DatabaseException内部异常: java.sql.SQLException: SQLITE_ERROR SQL错误或缺少数据库(接近“约束”:语法错误)错误代码:0 调用: ALTER添加约束FK_blub_customer_id外键(customer_id)引用客户(customer_id) 查询: DataModifyQuery(sql="ALTER约束FK_blub_customer_id外键(customer_id) REFERENCES (customer_id)")

如您所见,sqlite不支持外键约束的额外创建。

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

诚挚的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-19 13:53:58

添加您自己的DatabasePlatform子类并添加方法,

代码语言:javascript
复制
public boolean supportsForeignKeyConstraints() {
        return false;
}

然后使用这个平台使用"eclipselink.target-database“属性。

还请记录一个bug以添加SQLite支持,如果您成功地创建了一个平台,请附加您的平台。

更新18/08/2015

不确定此选项是否是新选项,您现在可以在JDBC连接配置/属性中将foreign_keys设置为false。这样,您将避免这些警告消息,并且它将根据需要创建外键。设置它的一种方法是使用:

代码语言:javascript
复制
SQLiteConfig config = new SQLiteConfig();
config.enforceForeignKeys(false);
Properties dbProps = config.toProperties();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12481700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档