Мой класс Bean:
package com.abcfinancial.api.generalledger.fee.domain;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.UUID;
@Data
@Entity
@Table( name = "fee" )
@EntityListeners( FeeListner.class )
public class Fee
{
@Id
@GeneratedValue( strategy = GenerationType.AUTO )
@Column( name = "fee_id" )
private UUID feeId;
@Column( name = "accn_id" )
private UUID accountId;
@Column( Name = "fee_created" )
@CreationTimestamp
private LocalDateTime created;
@Column( name = "fee_deactivated" )
private LocalDateTime deactivated;
@Column( name = "fee_modified" )
@CreationTimestamp
private LocalDateTime modified;
@Column( name = "fm_key" )
private String feeMode;
@Column( name = "ft_key" )
private String feeType;
@Column( name = "ftt_key" )
private String feeTransactionType;
@Column( name = "fvt_key" )
private String feeValueType;
@Column( name = "fee_value" )
private BigDecimal feeValue;
@Transient
private boolean active;
@PostLoad
@PrePersist
@PreUpdate
private void postLoad()
{
if( this.deactivated == null )
{
this.active = true;
}
}
}
В вышеприведенном классе я хочу активироваться за плату, используя переменную deactivated
.если Плата деактивирована, то Плата неактивна, иначе наоборот. Эта концепция работает в случае создания, удаления и получения комиссии, но не работает для обновления.
В плате обновления мы получаем плату по идентификатору и обновляем одну.переменная в той же Transaction.Below мой код платы за обновление (метод обслуживания):
@Transactional
public UpdateFeeVO updateFeeDetails( UpdateFeeRequestVO updateFeeVO, UUID feeId )
{
Optional<Fee> feeOptional = feeRepository.getDetailsByFeeId( feeId );//After this line feeOptional.get().getActive() give true
if( feeOptional.isPresent() )
{
//update some variable
feeRepository.save( feeOptional.get() );
log.trace( "Fee: {}",feeOptional.get() );// feeOptional.get().getActive() give false
}
}
Я не хочу вносить изменения в файл службы