Modeling & querying with SwiftData
@Model classes are reference types β and that's the point
Every model you've written since Module 2 β Walker, Booking β has been a struct: a value type. Copy a Walker and you get two independent walkers; mutate one, the other is untouched. @Model types are different on purpose: @Model final class WalkRecord is a reference type. Copy the reference and both variables point at the same object β mutate it through one, the other sees the change immediately.
That's not a limitation, it's why @Query works at all. SwiftData needs identity: one WalkRecord living in the database, with SwiftUI watching that specific object for mutations so it can redraw the instant a property changes. A struct copy would break that β there'd be no single object left to watch. This is why @Model types are classes, never structs β and by convention marked final, unless you specifically need a subclassable model hierarchy.