[hibernate-dev] dynamic instantiation queries
Steve Ebersole
steve at hibernate.org
Mon Oct 24 15:38:10 EDT 2016
So Person is your entity, e.g.:
@Entity
class Person {
@Id
Long id;
...
}
For a query like `select new DTO( p ) from Person p` Hibernate expects a
DTO like:
class DTO {
public DTO(Long id) {
...
}
}
in fact a DTO like:
class DTO {
public DTO(Person person) {
...
}
}
will not work with Hibernate.
What I was proposing was for adding some support for that in 6.0 based on
the SQM work. "Support" here could mean either:
1) add a flag that says whether to support legacy behavior, or this new
behavior
2) attempt to dynamically infer what to do (looks at available ctors)
(2) would be awesome I think. We'd still have to know how to handle cases
where the "DTO" defined ctors matching both cases and which to prefer.
On Mon, Oct 24, 2016 at 2:31 PM Vlad Mihalcea <mihalcea.vlad at gmail.com>
wrote:
> Do you mean we should allow the dynamic instantiation to resolve entities
> when we pass the entity identifier?
>
> I think I saw this request on StackOverflow once.
>
> Did I understand the question properly?
>
> Vlad
> ------------------------------
> From: Steve Ebersole <steve at hibernate.org>
> Sent: 10/24/2016 22:21
> To: hibernate-dev <hibernate-dev at lists.jboss.org>
> Subject: [hibernate-dev] dynamic instantiation queries
>
> Historically (well before JPA) HIbernate would handle dynamic instantiation
> queries in cases where one of the arguments being an entity-reference by
> passing just the entity's identifier rather than a complete reference to
> the entity. To be clear, I am talking about a query like:
>
> select new DTO( p ) from Person p
>
> Hibernate implicitly treats this like:
>
> select new DTO( p.id ) from Person p
>
> and expects DTO to have a ctor taking the appropriate ID type.
>
> JPA came along and also defines support for dynamic instantiation queries,
> but does not specify one way or the other how this case should be handled.
> I have been told other providers interpret this the opposite way. Makes
> sense. I think it is time we at least allow that as an option. Or maybe a
> nicer implementation that looks for both and picks the available one (if
> that's not too much effort).
>
> What do y'all think?
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>
More information about the hibernate-dev
mailing list