2012-05-10 5 views
1

データベースに2つのクラスがあり、1対多リレーションシップを設定したいと考えています。複雑ではありません。しかし、私はsquerylの_splitEquality(576行目)でアサーションエラーを起こしています。 Squerylは、だから私はSquerylを使用してOneToMany関係を作成しようとするとアサーションエラーが発生する

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

しかし、これは使用して実行時にスキーマfooが

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

、バーで

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) 
} 

を失敗されているバージョン0.9.5

です前述のアサーションの失敗、具体的には: assert(ee.right._fieldMetaData.isIdFieldOfKeyedEntity) が失敗しました

答えて

1

idを上書きする代わりにFooで列注釈を使用して修正しました。 だから、fooが

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

になった私は、これは働いていた理由は全くわからないんだけど、私はそれがなかったことにイライラです。

+0

ここでの問題は、KeyedEntityがプライマリキーフィールドに "id"という名前を使用しなければならないということでした。最初の例では、 "def"はこの制限を回避するのに十分ではありませんでした。 2番目のものでは、あなたはそのルールに従い、物事は働きました。 – jsalvata

関連する問題