【问题标题】:How to call service based classes from entity class in spring boot如何在spring boot中从实体类调用基于服务的类
【发布时间】:2019-11-27 10:08:23
【问题描述】:

这是我的多租户项目的一个实体类

@Entity
public class Customer {
private String uniqueCustomerId;
private String firstName;
private String lastName;

@Convert(converter = CryptoConverter.class)
private String mobile;
private String mobileShavalue;
}

在我的 CryptoConverter.java 中,我从 CryptoConverter.java 中编写的配置和加密逻辑中检查是否必须加密此属性。此外,如果配置告诉我必须加密移动属性,那么在这种情况下,我还必须存储属性 mobileShavalue 的 sha 值(来自配置的 sha1 或 sha2)。

我想到了实现这一点的一件事,就是通过在我的实体类中使用 @PrePersist 并再次从 PrePersist 方法获取配置来验证我是否必须存储移动 sha 值并在那里编写 shavalue 逻辑。

但是当我这样做时,我遇到了错误

@Autowired
EncryptionConfigService encryptionConfigService;

@PrePersist
private void doSomeCode(){
    encryptionConfigService.callNewMethod();
}

原因:org.hibernate.MappingException:无法确定类型:com.loylty.tms.service.EncryptionConfigService,在表:客户,列:[org.hibernate.mapping.Column(encryption_config_service)]

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

    用@Transient注解自动装配的服务,使ORM在序列化过程中忽略它

    @Transient
    @Autowired
    EncryptionConfigService encryptionConfigService;
    
    @PrePersist
    private void doSomeCode(){
        encryptionConfigService.callNewMethod();
    }
    

    【讨论】:

    • 但此时我将 encryptionConfigService 设为 null
    猜你喜欢
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 2016-02-04
    • 2015-06-09
    相关资源
    最近更新 更多