spring - How to migrate string field to enum? -
i have 2 versions of product entity have migrate data 1 other. "unit" attribute problem. original keeps kilogram unit "kg" , after migration should persisted "kilogram".
the new product entity has:
@enumerated(enumtype.string) public unit unit; i wrote converter:
@converter(autoapply = true) public class unitconverter implements attributeconverter<unit, string> { @override public string converttodatabasecolumn(unit attribute) { switch (attribute) { case kg: return "kg"; case lt: return "lt"; case mt: return "mt"; case pcs: return "pcs"; } return null; } @override public unit converttoentityattribute(string dbdata) { switch (dbdata) { case "kg": return unit.kg; case "lt": return unit.lt; case "mt": return unit.mt; case "pcs": return unit.pcs; } return null; } } and tried
public unit unit; but
invalid value getint() - 'kg'
java.lang.illegalstateexception: failed execute commandlinerunner @ org.springframework.boot.springapplication.callrunner(springapplication.java:801) [spring-boot-1.4.0.release.jar:1.4.0.release] @ org.springframework.boot.springapplication.callrunners(springapplication.java:782) [spring-boot-1.4.0.release.jar:1.4.0.release] @ org.springframework.boot.springapplication.afterrefresh(springapplication.java:769) [spring-boot-1.4.0.release.jar:1.4.0.release] @ org.springframework.boot.springapplication.run(springapplication.java:314) [spring-boot-1.4.0.release.jar:1.4.0.release] @ org.springframework.boot.springapplication.run(springapplication.java:1185) [spring-boot-1.4.0.release.jar:1.4.0.release] @ org.springframework.boot.springapplication.run(springapplication.java:1174) [spring-boot-1.4.0.release.jar:1.4.0.release] @ erp.migration.migrationapplication.main(migrationapplication.java:21) [bin/:na] caused by: org.springframework.orm.jpa.jpasystemexception: not execute query; nested exception org.hibernate.exception.genericjdbcexception: not execute query @ org.springframework.orm.jpa.vendor.hibernatejpadialect.converthibernateaccessexception(hibernatejpadialect.java:333) ~[spring-orm-4.3.2.release.jar:4.3.2.release] @ org.springframework.orm.jpa.vendor.hibernatejpadialect.translateexceptionifpossible(hibernatejpadialect.java:244) ~[spring-orm-4.3.2.release.jar:4.3.2.release] @ org.springframework.orm.jpa.abstractentitymanagerfactorybean.translateexceptionifpossible(abstractentitymanagerfactorybean.java:491) ~[spring-orm-4.3.2.release.jar:4.3.2.release] @ org.springframework.dao.support.chainedpersistenceexceptiontranslator.translateexceptionifpossible(chainedpersistenceexceptiontranslator.java:59) ~[spring-tx-4.3.2.release.jar:4.3.2.release] @ org.springframework.dao.support.dataaccessutils.translateifnecessary(dataaccessutils.java:213) ~[spring-tx-4.3.2.release.jar:4.3.2.release] @ org.springframework.dao.support.persistenceexceptiontranslationinterceptor.invoke(persistenceexceptiontranslationinterceptor.java:147) ~[spring-tx-4.3.2.release.jar:4.3.2.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.3.2.release.jar:4.3.2.release] @ org.springframework.data.jpa.repository.support.crudmethodmetadatapostprocessor$crudmethodmetadatapopulatingmethodinterceptor.invoke(crudmethodmetadatapostprocessor.java:133) ~[spring-data-jpa-1.10.2.release.jar:na] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.3.2.release.jar:4.3.2.release] @ org.springframework.aop.interceptor.exposeinvocationinterceptor.invoke(exposeinvocationinterceptor.java:92) ~[spring-aop-4.3.2.release.jar:4.3.2.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.3.2.release.jar:4.3.2.release] @ org.springframework.aop.framework.jdkdynamicaopproxy.invoke(jdkdynamicaopproxy.java:213) ~[spring-aop-4.3.2.release.jar:4.3.2.release] @ com.sun.proxy.$proxy102.findall(unknown source) ~[na:na] @ erp.migration.commandrunner.migratematerials(commandrunner.java:110) ~[bin/:na] @ erp.migration.commandrunner.run(commandrunner.java:99) ~[bin/:na] @ erp.migration.commandrunner$$fastclassbyspringcglib$$d69da090.invoke(<generated>) ~[bin/:na] @ org.springframework.cglib.proxy.methodproxy.invoke(methodproxy.java:204) ~[spring-core-4.3.2.release.jar:4.3.2.release] @ org.springframework.aop.framework.cglibaopproxy$cglibmethodinvocation.invokejoinpoint(cglibaopproxy.java:720) ~[spring-aop-4.3.2.release.jar:4.3.2.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:157) ~[spring-aop-4.3.2.release.jar:4.3.2.release] @ org.springframework.transaction.interceptor.transactioninterceptor$1.proceedwithinvocation(transactioninterceptor.java:99) ~[spring-tx-4.3.2.release.jar:4.3.2.release] @ org.springframework.transaction.interceptor.transactionaspectsupport.invokewithintransaction(transactionaspectsupport.java:280) ~[spring-tx-4.3.2.release.jar:4.3.2.release] @ org.springframework.transaction.interceptor.transactioninterceptor.invoke(transactioninterceptor.java:96) ~[spring-tx-4.3.2.release.jar:4.3.2.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.3.2.release.jar:4.3.2.release] @ org.springframework.aop.framework.cglibaopproxy$dynamicadvisedinterceptor.intercept(cglibaopproxy.java:655) ~[spring-aop-4.3.2.release.jar:4.3.2.release] @ erp.migration.commandrunner$$enhancerbyspringcglib$$8bb3a8a3.run(<generated>) ~[bin/:na] @ org.springframework.boot.springapplication.callrunner(springapplication.java:798) [spring-boot-1.4.0.release.jar:1.4.0.release] ... 6 common frames omitted caused by: org.hibernate.exception.genericjdbcexception: not execute query @ org.hibernate.exception.internal.standardsqlexceptionconverter.convert(standardsqlexceptionconverter.java:47) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(sqlexceptionhelper.java:109) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.loader.dolist(loader.java:2620) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.loader.dolist(loader.java:2600) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.loader.listignorequerycache(loader.java:2429) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.loader.list(loader.java:2424) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.hql.queryloader.list(queryloader.java:501) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.hql.internal.ast.querytranslatorimpl.list(querytranslatorimpl.java:371) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.engine.query.spi.hqlqueryplan.performlist(hqlqueryplan.java:216) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.internal.sessionimpl.list(sessionimpl.java:1326) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.internal.queryimpl.list(queryimpl.java:87) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.jpa.internal.queryimpl.list(queryimpl.java:606) ~[hibernate-entitymanager-5.0.9.final.jar:5.0.9.final] @ org.hibernate.jpa.internal.queryimpl.getresultlist(queryimpl.java:483) ~[hibernate-entitymanager-5.0.9.final.jar:5.0.9.final] @ org.hibernate.jpa.criteria.compile.criteriaquerytypequeryadapter.getresultlist(criteriaquerytypequeryadapter.java:50) ~[hibernate-entitymanager-5.0.9.final.jar:5.0.9.final] @ org.springframework.data.jpa.repository.support.simplejparepository.findall(simplejparepository.java:327) ~[spring-data-jpa-1.10.2.release.jar:na] @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) ~[na:1.8.0_111] @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) ~[na:1.8.0_111] @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[na:1.8.0_111] @ java.lang.reflect.method.invoke(method.java:498) ~[na:1.8.0_111] @ org.springframework.data.repository.core.support.repositoryfactorysupport$queryexecutormethodinterceptor.executemethodon(repositoryfactorysupport.java:503) ~[spring-data-commons-1.12.2.release.jar:na] @ org.springframework.data.repository.core.support.repositoryfactorysupport$queryexecutormethodinterceptor.doinvoke(repositoryfactorysupport.java:488) ~[spring-data-commons-1.12.2.release.jar:na] @ org.springframework.data.repository.core.support.repositoryfactorysupport$queryexecutormethodinterceptor.invoke(repositoryfactorysupport.java:460) ~[spring-data-commons-1.12.2.release.jar:na] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.3.2.release.jar:4.3.2.release] @ org.springframework.data.projection.defaultmethodinvokingmethodinterceptor.invoke(defaultmethodinvokingmethodinterceptor.java:61) ~[spring-data-commons-1.12.2.release.jar:na] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.3.2.release.jar:4.3.2.release] @ org.springframework.transaction.interceptor.transactioninterceptor$1.proceedwithinvocation(transactioninterceptor.java:99) ~[spring-tx-4.3.2.release.jar:4.3.2.release] @ org.springframework.transaction.interceptor.transactionaspectsupport.invokewithintransaction(transactionaspectsupport.java:280) ~[spring-tx-4.3.2.release.jar:4.3.2.release] @ org.springframework.transaction.interceptor.transactioninterceptor.invoke(transactioninterceptor.java:96) ~[spring-tx-4.3.2.release.jar:4.3.2.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.3.2.release.jar:4.3.2.release] @ org.springframework.dao.support.persistenceexceptiontranslationinterceptor.invoke(persistenceexceptiontranslationinterceptor.java:136) ~[spring-tx-4.3.2.release.jar:4.3.2.release] ... 26 common frames omitted caused by: java.sql.sqlexception: invalid value getint() - 'kg' @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:963) ~[mysql-connector-java-5.1.39.jar:5.1.39] @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:896) ~[mysql-connector-java-5.1.39.jar:5.1.39] @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:885) ~[mysql-connector-java-5.1.39.jar:5.1.39] @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:860) ~[mysql-connector-java-5.1.39.jar:5.1.39] @ com.mysql.jdbc.resultsetimpl.getint(resultsetimpl.java:2517) ~[mysql-connector-java-5.1.39.jar:5.1.39] @ com.mysql.jdbc.resultsetimpl.getint(resultsetimpl.java:2583) ~[mysql-connector-java-5.1.39.jar:5.1.39] @ org.hibernate.type.enumtype$ordinalenumvaluemapper.getvalue(enumtype.java:337) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.type.enumtype.nullsafeget(enumtype.java:231) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.type.customtype.nullsafeget(customtype.java:111) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.type.abstracttype.hydrate(abstracttype.java:85) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.persister.entity.abstractentitypersister.hydrate(abstractentitypersister.java:2727) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.loader.loadfromresultset(loader.java:1729) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.loader.instancenotyetloaded(loader.java:1655) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.loader.getrow(loader.java:1544) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.loader.getrowfromresultset(loader.java:727) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.loader.processresultset(loader.java:972) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.loader.doquery(loader.java:930) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.loader.doqueryandinitializenonlazycollections(loader.java:336) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] @ org.hibernate.loader.loader.dolist(loader.java:2617) ~[hibernate-core-5.0.9.final.jar:5.0.9.final] ... 53 common frames omitted
Comments
Post a Comment