使用CompositeKey进行oneToManyRelation

时间:2015-07-28 11:16:26

标签: scala orm squeryl

我正在尝试使用squeryl创建数据库。此DB需要两个不相关的表之间的映射。我的问题是其中一个不相关的表有一个CompositeKey2作为PrimaryKey。

当我尝试创建我的Schema时,它总是抛出异常。我遇到过很多例外情况。以下是我想要做的一些信息:

class Table1(val foo: Long,
             val bar: String
) extends KeyedEntity[CompositeKey2[Long, String]] {

    def id = compositeKey(foo, bar)
}

class Table2(val data: Array[Byte]) extends KeyedEntity[Long] {

    val id = 0L
} 

class Table1ToTable2Mapping(val table1Foo: Long,
                            val table1Bar: String,
                            val table2Id: Long
    ) extends KeyedEntity[CompositeKey3[Long, String, Long]] {

    def id = compositeKey(table1Foo, table1Bar, table2Id)
}

我尝试过的每个Schema声明的例外:

//Schema:
oneToManyRelation(table1, table1ToTable2Mapping).via((t1, t1Tot2) => t1.id.a2 === t1Tot2.table1Bar)
  

引起:java.lang.ClassCastException:
  org.squeryl.PrimitiveTypeMode $$ anon $ 1无法转换为
  org.squeryl.dsl.ast.SelectElementReference

//Schema:
oneToManyRelation(table1, table1ToTable2Mapping).via((t1, t1Tot2) => t1.bar === t1Tot2.table1Bar)
  

java.lang.AssertionError:断言失败

这种行为可能与THIS票证有关吗? 有没有已知的工作?

0 个答案:

没有答案