Circumflex ORM(StackOverflowで提案されているように-ここ、ここ、ここ)を使用して、Scalaプロジェクト(単純なビルドツールでビルド)からJDBCを介してローカル(埋め込み)ApacheDerbyデータベースに接続しようとしています。指示に注意深く従っていますが、いくつかの興味深い問題があります。
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シェルを使用)、オブジェクト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...
誰かが「遭遇した「パブリック」」とApacheDerbyで同様の問題を抱えているこのスレッドを見つけましたが、返信は今後の有用な方法を示唆していないようです。
これを引き起こしている可能性のあるアイデアはありますか?