Yep, missed it.

Works for me. Maybe the name should be closer to other methods,
mapKey? But whatever you choose as name this solution works :).


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 15:54 GMT+02:00 Thomas Hug <thomas....@gmail.com>:
> 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
>> >> >>
>> >>
>>

Reply via email to