Of course, the method would be called add() and would return void....this is 
consistent with the notion that Repositories model a persistent Collection.

@RequiresTransaction
public void add(E entity) {
    this.entityManager().persist(entity);
}

-----Original Message-----
From: Roos, Robin [mailto:[email protected]] 
Sent: 26 November 2015 12:21
To: [email protected]
Subject: Extending EntityRepository interface and EntityRepositoryHandler class

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 protected] 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.
***********************************************************************************************************

***********************************************************************************************************
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 protected] 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.
***********************************************************************************************************

Reply via email to