deltaspike-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Roos, Robin" <Robin.R...@ntc-europe.co.uk>
Subject Extending EntityRepository interface and EntityRepositoryHandler class
Date Thu, 26 Nov 2015 12:21:06 GMT
Hi Folks

My developers are building a JPA application in which Domain objects remain entirely within
the transactional context.  This means we never do detach/merge, whether implicitly or explicitly.

I am concerned that the default Save() implementation in EntityRepositoryHandler would incur
a merge() if an already-persistent instance was passed to save().


@RequiresTransaction
public E save(E entity) {
    if(this.context.isNew(entity)) {
        this.entityManager().persist(entity);
        return entity;
    } else {
        return this.entityManager().merge(entity);
    }
}

To preclude this I would like to extend EntityRepositoryHandler to provide an implementation
of a new method add(), as follows:

@RequiresTransaction
public E save(E entity) {
    this.entityManager().persist(entity);
    return entity;
}

Presumably I would put this method signature into interface MyEntityRepository extends EntityRepository,
and the implementation into class MyEntityRepositoryHandler extends EntityRepositoryHandler.
 Repository interfaces would then implement MyEntityRepository.  (We do not have any Repository
"implementations" since DeltaSpike takes care of that for us.)

But how do I get it all joined up, i.e.  how to I nominate my new Handler to be used when
CDI is working its magic on the Repository interfaces?

Thanks, Robin.

***********************************************************************************************************
Nissan Motor Manufacturing (UK) Limited is a limited liability company registered in England
and Wales under number 01806912 with its registered office at Washington Road, Sunderland,
Tyne and Wear SR5 3NS.

CONFIDENTIALITY NOTICE AND DISCLAIMER 

This message including any attachments to it (Message) is private and confidential and may
contain proprietary or legally privileged information.  If you have received this Message
in error, please send an email to email.security@nissan-europe.com with a copy of this Message
and remove it from your system. You must not, directly or indirectly, use, disclose, distribute,
print or copy any part of this Message if you are not the intended recipient. The NISSAN EUROPE
S.A.S group of companies (NISSAN) reserve the right to monitor all e-mail communications through
its networks.
 
NISSAN is not liable for the proper/complete transmission or any delay in the receipt of this
Message .  Whilst NISSAN takes care to protect its systems from electronic virus attack or
other harmful event, NISSAN gives no warranty that this Message is free of any virus or other
harmful matter and accepts no liability for any loss or damage resulting from the recipient
receiving, opening or using it. 
 
Any views or opinions expressed in this Message are those of the author and do not necessarily
represent those of NISSAN.
***********************************************************************************************************

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message