Class CreateAlteredTrackableRepositoryOverrideImpl
java.lang.Object
com.broadleafcommerce.billing.provider.jpa.repository.CreateAlteredTrackableRepositoryOverrideImpl
- All Implemented Interfaces:
CreateAlteredTrackableRepositoryOverride
public class CreateAlteredTrackableRepositoryOverrideImpl
extends Object
implements CreateAlteredTrackableRepositoryOverride
Our normal pattern is to pre-assign primary keys, but keep the domain class id declaration using
Hibernate generation in case an alternate flow is used to create. However, this has the side
effect of making creates use a merge. For billing domain, we want to force creates to use entity
manager persist, which will use a sql insert. The design intent is to create once and then fail
with an integrity violation anywhere else where a `service`#create flow is called for the same
id. To establish the "create" circumstance, we rely on either detecting the operation type on the
contextInfo parameter for the save call, or detecting a null value for the
Version
annotated field.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidapplyLock(com.broadleafcommerce.data.tracking.core.Trackable managed) protected voiddetectVersionAttribute(com.broadleafcommerce.data.tracking.core.Trackable entity) protected <T> Optional<jakarta.persistence.metamodel.SingularAttribute<?,?>> findVersionAttribute(jakarta.persistence.metamodel.IdentifiableType<T> type, jakarta.persistence.metamodel.Metamodel metamodel) protected jakarta.persistence.EntityManagergetEm()protected <T> booleanisNew(T entity) protected voidreplenishRequiredFields(com.broadleafcommerce.data.tracking.core.Trackable entity) com.broadleafcommerce.data.tracking.core.Trackablesave(com.broadleafcommerce.data.tracking.core.Trackable entity, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Serves as override forJpaTrackableRepository.save(Trackable, ContextInfo)Iterable<com.broadleafcommerce.data.tracking.core.Trackable>saveAll(Iterable<com.broadleafcommerce.data.tracking.core.Trackable> entities, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Serves as override forJpaTrackableRepository.saveAll(Iterable, ContextInfo)protected voidsetTrackingContainer(com.broadleafcommerce.data.tracking.core.Trackable result)
-
Constructor Details
-
CreateAlteredTrackableRepositoryOverrideImpl
public CreateAlteredTrackableRepositoryOverrideImpl()
-
-
Method Details
-
save
@Transactional(transactionManager="billingTransactionManager") public com.broadleafcommerce.data.tracking.core.Trackable save(com.broadleafcommerce.data.tracking.core.Trackable entity, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CreateAlteredTrackableRepositoryOverrideServes as override forJpaTrackableRepository.save(Trackable, ContextInfo)- Specified by:
savein interfaceCreateAlteredTrackableRepositoryOverride
-
saveAll
@Transactional(transactionManager="billingTransactionManager") public Iterable<com.broadleafcommerce.data.tracking.core.Trackable> saveAll(Iterable<com.broadleafcommerce.data.tracking.core.Trackable> entities, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CreateAlteredTrackableRepositoryOverrideServes as override forJpaTrackableRepository.saveAll(Iterable, ContextInfo)- Specified by:
saveAllin interfaceCreateAlteredTrackableRepositoryOverride
-
replenishRequiredFields
protected void replenishRequiredFields(com.broadleafcommerce.data.tracking.core.Trackable entity) -
detectVersionAttribute
protected void detectVersionAttribute(com.broadleafcommerce.data.tracking.core.Trackable entity) -
setTrackingContainer
protected void setTrackingContainer(com.broadleafcommerce.data.tracking.core.Trackable result) -
applyLock
protected void applyLock(com.broadleafcommerce.data.tracking.core.Trackable managed) -
isNew
protected <T> boolean isNew(T entity) -
findVersionAttribute
protected <T> Optional<jakarta.persistence.metamodel.SingularAttribute<?,?>> findVersionAttribute(jakarta.persistence.metamodel.IdentifiableType<T> type, jakarta.persistence.metamodel.Metamodel metamodel) -
getEm
protected jakarta.persistence.EntityManager getEm()
-