私はapache tinkerpopグラフにマップしたケースクラスで等しいかどうかのチェックに問題がありますが、グラフを照会した後で同等かどうかを確認したい。データベースから読み込んだ場合のスカラケースクラスの等価性
@label("apartment")
case class Apartment(@id id: Option[Int], address: String, zip: Zip, rooms: Rooms, size: Size, price: Price, link: String, active: Boolean = true, created: Date = new Date()) {}
val ApartmentAddress = Key[String]("address")
Await.result(result, Duration.Inf).foreach(apt => {
val dbResult = graph.V.hasLabel[Apartment].has(ApartmentAddress, apt.address).head().toCC[Apartment]
println(dbResult == apt) //always false :(
})
私の問題は、オブジェクトを作成したときにIDがなく、タイムスタンプが明らかに異なることです。 I 2番目のパラメータリストを追加する場合、それはイコールから除外されていることを読んで、私はそれを変更:
@label("apartment")
case class Apartment(address: String, zip: Zip, rooms: Rooms, size: Size, price: Price, link: String, active: Boolean = true)(@id implicit val id: Option[Int] = None, implicit val created: Date = new Date()) {}
val ApartmentAddress = Key[String]("address")
Await.result(result, Duration.Inf).foreach(apt => {
val dbResult = graph.V.hasLabel[Apartment].has(ApartmentAddress, apt.address).head().toCC[Apartment]
println(dbResult == apt) //true! yay! :D
})
私は今、==を使用して等価性をチェックすることができますが、データベースからの値はそのIDを失い、 「作成された」値がリセットされます。そして、一つの他のイライラ事は、彼らは常に最後に余分な括弧を使用して作成する必要があります等号の過負荷をせずにこの機能を実現する方法は
Apartment(address, zip, rooms, size, price, link)()
ありますか?または、このアプローチを使用してデータベースからの値を元の値に維持しますか?
それはあなたのケースで思わ
完璧!ありがとうございました! – Raudbjorn