1

データベースに2つのクラスがあり、1対多の関係を設定したいと考えています。複雑なことは何もありません。ただし、squerylの_splitEquality(576行目)でアサーションエラーが発生します。Squerylはバージョン0.9.5です

だから私はスキーマを持っています

object Tables extends Schema {
val foo = table[Foo]("foo_table")
val bar = table[Bar]("bar_table")

val fooBar = oneToManyRelation(foo,bar).via((f,b) => f.id === bar.foo_fk)
}

fooはどこにありますか

 class Foo (val foo_id: String, val useful_info: String) 
   extends KeyedEntity[String] {
 override def id: String = foo_id
 }

とバーは

class bar (val foo_fk) {
def useful_info = Tables.fooBar.right(this).head.useful_info
}

ただし、これは実行時に前述のアサーションの失敗、具体的には次のように assert(ee.right._fieldMetaData.isIdFieldOfKeyedEntity) 失敗します。

4

1 に答える 1

1

idをオーバーライドする代わりに、Fooの列アノテーションを使用して修正しました。だからfooはなりました

class Foo (
@Column("foo_id")
val id: String, 
val useful_info: String) 
  extends KeyedEntity[String] {
}

なぜこれが機能したのか完全にはわかりませんが、機能したことに腹を立てています。

于 2012-05-10T11:33:24.337 に答える