Home > OS >  Getting Bean creation exception when used @convert
Getting Bean creation exception when used @convert

Time:08-08

In my code I need a functionality to encrypt data before saving into database and decrypt after retrieving. I tried using @Convert. But when i use that i am getting bean creation exception like below.

WARN  Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customerContactNumbersDao' defined in URL [file:/C:/Users/Praveen/.jrebel/cache/com.yanasoftware.ig.commons.flights-dao/deployment/META-INF/spring/garuda-dao.xml]: Cannot create inner bean 'abstractFlightsDaoTarget$child#30674e63' of type [com.yanasoftware.flightsdao.dao.impl.GenericDaoImpl] while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'abstractFlightsDaoTarget$child#30674e63': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flightsEntityManagerFactory' defined in URL [file:/C:/Users/Praveen/.jrebel/cache/com.yanasoftware.ig.commons.flights-dao/deployment/META-INF/spring/garuda-jpa.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: flights] Unable to build Hibernate SessionFactory

Do I have to configure attributeconverter separately or if i use @Converter annotation is sufficient?

import org.apache.log4j.Logger;

import javax.persistence.AttributeConverter;
import javax.persistence.Converter;

@Converter
public class CreditCardNumberConverter implements AttributeConverter<String, String> {
    Logger LOGGER =Logger.getLogger(CreditCardNumberConverter.class);

    @Override
    public String convertToDatabaseColumn(String s) {
        String value = CryptoLibrary.encrypt(s);
        LOGGER.info("######### saving value first name : "   value);
        return  value;
    }

    @Override
    public String convertToEntityAttribute(String s) {
        String value = CryptoLibrary.decrypt(s);
        LOGGER.info("######### getting value first name : "   value);
        return value;
    }
}

And in Dto class i have used following code.

@Convert(converter = CreditCardNumberConverter.class)
    @Column(name = "FIRST_NAME")
    public String getFirstName() {
        return firstName;
    }

Hibernate version 4.3.8 and jpa 2.1 Can you please tell me how to resolve the issue.

CodePudding user response:

This issue is coming for audited entity classes, This is existing bug in hibernate. Alternatively we can use @Type for this kind of scenarios.

  • Related