Je teste (essayer) les relations de squeryl la fonction de modélisationSélection des relations sur squeryl
class Foo(val id: Long, val foBar: Long) extends KeyedEntity[Long]{
//Many Foo's can have one Bar.
lazy val fbar: ManyToOne[Bar] = myschema.barToFoo.right(this)
}
class Bar(val id: Long) extends KeyedEntity[Long]{
//One Bar can be assigned to many Foo's.
lazy val bfoo: OneToMany[Foo] = myschema.barToFoo.left(this)
}
object myschema extends Schema{
val bars= table[Bar]
val foo= table[Foo]
val barToFoo =
oneToManyRelation(Bar, Foo).
via((b,f) => b.id === f.foBar)
/** Find all Bars that are assigned to at least one foo.*/
def findBars() ={
from(bars)((b) => where(b.bfoo.size gt 0) select(b))
}
}
Si je tente de tester ce code avec le code suivant:
test("Test findBars"){
using(jdbcSession){
val mybars = telemetria.findBars
for{i <- mybars}{
println(i.id)
i.id should equal(1)
}
}
}
Et je reçois l'erreur suivante :
java.util.NoSuchElementException: None.get
l'exception est levée du corps de findBars. Je ne peux pas penser à tout ce qui pourrait causer un tel problème. Est-ce que quelqu'un a rencontré une situation similaire?
Depuis Daniel a fait remarquer qu'il pourrait être un problème de compilation, je Concaténer les build.properties et une propriété de project.scala
project.organization=org.simepar
project.name=scalatra-sbt-prototype
sbt.version=0.7.4
project.version=2.0.0.M2
def.scala.version=2.8.1
build.scala.versions=2.8.1
project.initialize=false
;
val squeryl = "org.squeryl" % "squeryl_2.8.0" % "0.9.4-RC3"
J'ai ajouté un peu plus d'informations sur le processus de construction et fait en sorte que j'utilisais la nouvelle version de squeryl et la construction du projet contre scala 2.8.1 –