Hi Torsten, thank you so much.
I have a trouble. This is the change that I did.
class ShapeType private() extends MongoRecord[ShapeType] with ObjectIdPk[ShapeType]{
override def meta = ShapeType
object nameType extends StringField(this, 100)
}
object ShapeType extends ShapeType with RogueMetaRecord[ShapeType]
// I put here shapeType : ShapeType but not run
trait Shape{
val name: String
val shapeType : ObjectId
}
case class Square(
name: String,
shapeType : ObjectId,
side: Int
) extends Shape{
def meta = Square
}
case class Triangle(
name: String,
shapeType : ObjectId,
base: Int,
height: Int
) extends Shape{
def meta = Triangle
}
case class Circle(
name: String,
shapeType: ObjectId,
radius: Int
) extends Shape{
def meta = Circle
}
class ShapeCollection private() extends MongoRecord[ShapeCollection] with ObjectIdPk[ShapeCollection]{
override def meta = ShapeCollection
object listShapes extends MongoCaseClassListField[ShapeCollection, Shape](this){
override def formats = Serialization.formats(ShortTypeHints(List(classOf[Square], classOf[Triangle], classOf[Circle])))
}
}
object ShapeCollection extends ShapeCollection with RogueMetaRecord[ShapeCollection]
val shapeType1 = ShapeType.createRecord
.nameType("Square")
shapeType1.save(true)
val shapeType2 = ShapeType.createRecord
.nameType("Triangle")
shapeType2.save(true)
val shapeType3 = ShapeType.createRecord
.nameType("Square")
shapeType3.save(true)
val square = Square("square", shapeType1.id.get, 10)
val triangle = Triangle("triangle", shapeType2.id.get, 10, 5)
val circle = ("circle", shapeType3.id.get, 10)
val collect
= ShapeCollection.
createRecord
.listShapes
(List
(square, triangle, circle
)) val collectSaved = collect.
save
println(collectSaved)
// it print this
class code.model.ShapeCollection={ _id=54f9b0758ff616651d8e3555, listShapes=Lis
t(Square(square,54e7a672cbc215cfdd54765d,10), Triangle(triangle,54e7a672cbc215cfdd54766d,10,5), Circle(circle,64e7a672cbc215cfdd54765d,10))}
In other snippet I call:
val collect = ShapeCollection.findAll.headOption.getOrElse(ShapeCollection.createRecord)
println(collect)
// it print this
class code.model.ShapeCollection={ _id=54f9b0758ff616651d8e3555, listShapes=Lis
t()}
The result on db:
db.shapeCollections.find()
{ "_id" : ObjectId("
54f8d2558ff6969fdcf80661"), "references" : [ { "jsonClass" : "Square
", "name" : "square", "shapeType" : { } , "side" : "10"} , { "jsonClass" : "Triangle
", "name" : "triangle", "shapeType" : { } , "base" : "10", "height" : "5"} ,{ "jsonClass" : "Circle
", "name" : "circle", "shapeType" : { } , "radius" : "10"} ] }
Why return a empty List?
Why on data base not datas for shapeType show?
Thanks in advance