Scala 尝试使用Squeryl创建OneToMany关系时断言失败

Scala 尝试使用Squeryl创建OneToMany关系时断言失败,scala,squeryl,Scala,Squeryl,我在数据库中有两个类,希望建立一对多关系。没什么复杂的。然而,我在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) =&

我在数据库中有两个类,希望建立一对多关系。没什么复杂的。然而,我在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)
}
福在哪里

 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.\u fieldMetaData.isIdFieldOfKeyedEntity)

失败

我通过在Foo上使用列注释而不是重写id来修复它。 所以富成了

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

我不完全确定为什么会这样,但我很恼火它确实起了作用。

我通过在Foo上使用列注释而不是覆盖id来修复它。 所以富成了

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

我不完全确定这是为什么,但我很恼火它确实起作用了。

这里的问题是KeyedEntity必须在主键字段中使用名称“id”。在第一个示例中,“def”不足以解决此限制。在第二个例子中,你遵守了这个规则,事情就成功了。这里的问题是KeyedEntity必须在主键字段中使用名称“id”。在第一个示例中,“def”不足以解决此限制。在第二种情况下,你按照这条规则居住,一切正常。