Пользовательские преобразования не работают в весенних данных jdbcJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Пользовательские преобразования не работают в весенних данных jdbc

Сообщение Anonymous »

Прежде чем перейти к реальной проблеме, позвольте мне кратко рассказать, что я ищу.
Я ищу шифрование и расшифровку полей внутри объекта. в JPA мы можем использовать конвертер атрибутов и добиться этого. но в весенних данных jdbc он, кажется, не поддерживается.
Итак, я пытаюсь использовать функцию пользовательских преобразований весенних данных jdbc. здесь я создаю один тип, как показано ниже
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class EncryptionDataType {
private String value;

@Override public String toString() {
return value ;
}
}

в Pojo я буду использовать этот тип в качестве поля.
@Table("EMPLOYEE")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Data
public class Employee
{
@Column("name")
private EncryptionDataType name;
@Id
private Integer id;
@Version
private Long version;

}

поэтому я ожидаю сохранить EncryptionDataType как обычный строковый столбец в MySQL, для этого я создал конвертер для чтения и записи
@WritingConverter
public class EncryptionDataTypeWriteConverter implements Converter {
@Override public String convert(EncryptionDataType source) {
return source.toString()+"add";
}
}
@ReadingConverter
public class EncryptionDataTypeReadConverter implements Converter {

@Override public EncryptionDataType convert(String source) {
return new EncryptionDataType(source);
}
}

настройка этих преобразований в файле конфигурации.
@Configuration
public class MyConfig {

@Bean
protected JdbcCustomConversions JdbcConversion(Dialect dialect) {
return new JdbcCustomConversions(
Arrays.asList(new EncryptionDataTypeReadConverter(),new EncryptionDataTypeWriteConverter()));
}
}

Похоже, эта конфигурация не работает. у меня появляется ошибка ниже.
PreparedStatementCallback; bad SQL grammar [INSERT INTO `encryption_data_type` (`name`, `value`) VALUES (?, ?)]; nested exception is java.sql.SQLSyntaxErrorException: Table 'testschema.encryption_data_type' doesn't exist

кажется, вместо преобразования моего типа шифрования данных в строку он пытается вставить его в новую таблицу. Пожалуйста, помогите мне. я что-то упустил?
Обновленный код конфигурации:
@Configuration
@EnableJdbcRepositories(transactionManagerRef = "CustomJdbcTranasactionManager", jdbcOperationsRef = "CustomJdbcOperationsReference", repositoryFactoryBeanClass = CustomRepositoryFactoryBean.class, basePackages = {
"com.java.testy"
})
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration.class,
org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration.class
})
public class MyConfig {

@Bean
protected JdbcCustomConversions JdbcConversion(Dialect dialect) {
return new JdbcCustomConversions(
Arrays.asList(new EncryptionDataTypeReadConverter(),new EncryptionDataTypeWriteConverter()));
}
// creating beans for datasource,JdbcOperationsReference,JdbcTranasactionManager,JdbcConverter,JdbcMappingContext,DataAccessStrategy,JdbcAggregateTemplate
}


Подробнее здесь: https://stackoverflow.com/questions/728 ... -data-jdbc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»