我正在尝试使用Circumflex ORM(如 StackOverflow 上的建议-此处、此处和此处)从 Scala 项目(使用简单的构建工具构建)通过 JDBC 连接到本地(嵌入式)Apache Derby 数据库。我已仔细按照说明进行操作,但遇到了一些有趣的问题。
这是 cx.properties 文件的驱动程序和 URL 组件:
orm.connection.driver=org.apache.derby.jdbc.EmbeddedDriver
orm.connection.url=jdbc:derby:derbyDB
(这些映射到使用原始 JDBC 或persistence.xml 中的等价物的“反射驱动程序的实例创建和创建连接”模型 - Circumflex 正在使用一个简短而实用的属性文件,因为您知道,它不是 XML,这是一个很好的事物。)
我在我的 sbt 项目文件中添加的直接相关的依赖项是:
"ru.circumflex" % "circumflex-orm" % "1.0",
"org.apache.derby" % "derby" % "10.6.1.0"
我创建了一个简短的示例模型,它定义了文档描述的表格的简化版本:
import java.sql.DriverManager
import ru.circumflex.orm._
class Country extends Record[Country] {
val code = "code" VARCHAR(2)
val name = "name" TEXT
}
object Country extends Table[Country]
这似乎可以编译,我可以实例化 Country 对象(使用通过 sbt 控制台调用的 Scala 2.8.0 RC5 shell)并创建一个 ActiveRecord 样式的对象,然后像这样保存它:
val c = new Country
c.code := "US"
c.name := "United States of America"
c.save
根据文档,这应该对对象进行验证,然后将其插入数据库。我得到以下异常:
java.sql.SQLSyntaxErrorException: Syntax error: Encountered "public" at line 1, column 13.
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement30...
我发现有人在“遇到“公共””和 Apache Derby 时遇到类似问题的线程,但回复似乎并没有提出一种有用的前进方式。
有什么想法可能导致这种情况吗?