Coming from a Entity Framework Background I can cast my ORM results to a class that contains a subset of the full back-end model’s data.
I have a JAX-RS REST Service where I am usually returning something like
MyEntity result = em.createQuery(select e from MyEntity e ... blah blah blah).
I know I can do this:
Object result = em.createQuery(select e.Title, e.Version, e.Date from MyEntity e... blah blah blah).
But can I either a:
Cast my result to a separate class or B name my fields in my createquery such that they are named when returning my JSON?
For example in .Net Land I could do something like….
(select new {Title = e.Title, Version = e.Version})
and then cast this to another type. I tried using a typedquery and casting but I get a “Type X is incompatible with return type Y” type error.
My goal is to return a specific subset (view model/ DTO)of my information for consumption in a specific scenario.
E.g My model is huge and I don’t want to return a large amount of the data every time.
Yes, creating non-entity types is possible, using JPA constructor expressions i.e. the
NEWkeyword:The DTO must have a constructor with all the relevant fields.
There is no need for casting.