Spring Boot JPA AttributeConverter с несколькими источниками данных - PullRequest
0 голосов
/ 05 мая 2020

Я зашифровал данные Spring JPA Entity с помощью специального конвертера атрибутов. Я прекрасно работал с одним (по умолчанию) postgres источником данных при весенней загрузке. Теперь, когда я реализовал несколько источников данных, шифрование / дешифрование столбцов сущностей внезапно прекратилось. Понятия не имею, почему конвертер атрибутов не работает в случае нескольких источников данных.

**Error:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: Error attempting to apply AttributeConverter; nested exception is javax.persistence.PersistenceException: Error attempting to apply AttributeConverter**


Sample Entity Class code:

@Entity
@Table(name="users")
@Data
public class User{

    @Id
    private String id;
    @Column(name="u_name")
    @Convert(converter = StringEncryptDecryptConverter.class)
    private String userName;
    @Column(name="u_contact")
    @Convert(converter = StringEncryptDecryptConverter.class)
    private String contact;
    @Column(name = "u_address")
    private String address;

}


StringEncryptDecryptConverter Class Code:
<pre><code>
@Converter(autoApply = false)
public class StringEncryptDecryptConverter
extends AbstractEncryptDecryptConverter<String> {

    /**
     * Default constructor initializes with an instance of the
     * {@link CipherMaker} crypto class to get a {@link javax.crypto.Cipher}
     * instance
     */
    public StringEncryptDecryptConverter() {
        this(new CipherMaker());
    }

    /**
     * Constructor
     * 
     * @param cipherMaker
     */
    public StringEncryptDecryptConverter(CipherMaker cipherMaker) {
        super(cipherMaker);
    }

    @Override
    boolean isNotNullOrEmpty(String attribute) {
        return isNotEmpty(attribute);
    }

    @Override
    String convertStringToEntityAttribute(String dbData) {
        return dbData;
    }

    @Override
    String convertEntityAttributeToString(String attribute) {
        return attribute;
    }
}

application.properties : 

spring.datasource.jdbcUrl=jdbc:postgresql://127.0.0.1:5432/test_Db
spring.datasource.username=postgres
spring.datasource.password=root

spring.another-datasource.jdbcUrl=jdbc:postgresql://127.0.0.1:5432/another_db
spring.another-datasource.username=postgres
spring.another-datasource.password=root*

Any help would be appreciated.
Thanks.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...