It's the PK, not the Entity ;) In SimpleQueryInOutMapperBase, it could be something like
@Inject private QueryInvocationContext context; protected abstract Object getPrimaryKey(Dto dto); protected E findEntity(Object pk) { return (E) context.getEntityManager().find(context.getEntityClass(), pk); } @Override public Object mapParameter(final Object parameter) { Object pk = getPrimaryKey((Dto) parameter); if (pk != null) { E entity = findEntity(pk); return toEntity(entity, (Dto) parameter); } return toEntity(newEntity(), (Dto) parameter); } On Sat, May 17, 2014 at 1:57 PM, Romain Manni-Bucau <rmannibu...@gmail.com>wrote: > would work while return is <E> and not Object ;) > > > Romain Manni-Bucau > Twitter: @rmannibucau > Blog: http://rmannibucau.wordpress.com/ > LinkedIn: http://fr.linkedin.com/in/rmannibucau > Github: https://github.com/rmannibucau > > > 2014-05-17 11:47 GMT+02:00 Thomas Hug <thomas....@gmail.com>: > > Or a protected abstract Object getPrimaryKey(Dto dto). We can get the EM > > over an injected QueryInvocationContext. > > > > > > On Thu, May 15, 2014 at 9:06 PM, Romain Manni-Bucau > > <rmannibu...@gmail.com>wrote: > > > >> I think a protected findEntity(id) in the mapper can be enough. > >> > >> > >> Romain Manni-Bucau > >> Twitter: @rmannibucau > >> Blog: http://rmannibucau.wordpress.com/ > >> LinkedIn: http://fr.linkedin.com/in/rmannibucau > >> Github: https://github.com/rmannibucau > >> > >> > >> 2014-05-07 22:29 GMT+02:00 Thomas Hug <thomas....@gmail.com>: > >> > Hi Romain, > >> > See your point. But if we only get the DTO - with what would we call > the > >> > find? Could even be that the PK is a DTO or encoded / encrypted and > needs > >> > to go through the mapper first. Maybe we can provide some convenience > >> > methods in the base mapper? > >> > > >> > > >> > On Tue, May 6, 2014 at 7:41 PM, Romain Manni-Bucau < > >> rmannibu...@gmail.com>wrote: > >> > > >> >> Hi guys, > >> >> > >> >> DTO feature is awesome but doesn't work in update mode since isNew > >> >> doesn't use a managed entity. > >> >> > >> >> When using a mapper we should call find and pass it to the mapper (or > >> >> create a new unmanaged entity if not found). So mapper signature > >> >> should be Entity toEntity(Entity, DTO) no? > >> >> > >> >> Otherwise users need to do the find in the mapper...almost eveytime. > >> >> > >> >> wdyt? > >> >> > >> >> > >> >> Romain Manni-Bucau > >> >> Twitter: @rmannibucau > >> >> Blog: http://rmannibucau.wordpress.com/ > >> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau > >> >> Github: https://github.com/rmannibucau > >> >> > >> >