我想在一个简单的 Java Swing 应用程序中使用 JPA 2.0 和 EclipseLink (2.4.0) 和 sqlite 3.7.2。
我遇到的第一件事是,EclipseLink 不支持 sqlite。这是输出:
[EL 信息]:2012-09-18 18:05:42.246--ServerSession(31125695)--EclipseLink,版本:Eclipse Persistence Services - 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)--异常 [EclipseLink-4002] (Eclipse Persistence Services - 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions .DatabaseException 内部异常:java.sql.SQLException:[SQLITE_ERROR] SQL 错误或缺少数据库(“CONSTRAINT”附近:语法错误)错误代码:0
调用:ALTER TABLE blub ADD CONSTRAINT FK_blub_customer_id FOREIGN KEY (customer_id) REFERENCES customer (customer_id)
查询:DataModifyQuery(sql="ALTER TABLE blub ADD CONSTRAINT FK_blub_customer_id FOREIGN KEY (customer_id) REFERENCES customer (customer_id)")
如您所见,sqlite 不支持额外创建外键约束。
你知道如何解决这个问题吗?
此致