Extreme Refactoring

Status
Nicht offen für weitere Antworten.

The_S

Top Contributor
Hi-Ho,

ich habe einen ganzen Haufen voll VOs, die natürlich eine Tabelle in einer DB repräsentieren. Die VOs sind unabhängig von der DB entstanden. Meine Aufgabe ist es nun, die VOs an die Tabellenstruktur anzupassen. Dabei fällt auf, dass der DB-Designer einen Integer als ID für die Tabellen verwendet hat, wir aber auf einen Long (BigInt) gesetzt haben.

Wie bekomme ich jetzt am simpelsten die IDs meiner ganzen VOs (ein package + subpackages) und die dazugehörigen Getter und Setter in einen Integer geändert? Optimal wäre natürlich, wenn die ganzen Zugriffe und Aufrufe der VOs auch automatisiert umgestellt werden können.

Danke!

Ps.: Das Mapping übernimmt Hibernate.
 

tfa

Top Contributor
Eigentlich sollte Hibernate damit zurecht kommen, sodass eine Änderung unnötig ist.
In unserer DB sind die IDs auch Integer, auf Java-Seite aber Longs. Das passt.
(Wir warten auf eine neue DB2-Version, die endlich 64-Bit-Integer unterstützt, sonst gehen uns in ca. 4 Jahren die IDs aus).
 

The_S

Top Contributor
Macht er aber nicht. Ich erhalte folgende Fehlermeldung

Code:
java.lang.ExceptionInInitializerError
	at de.so.dlp.handler.I18NHandler.<init>(I18NHandler.java:19)
	at de.so.dlp.handler.ExtrapolationHandler.<init>(ExtrapolationHandler.java:58)
	at de.so.dlp.facade.DispoFacade.<init>(DispoFacade.java:70)
	at de.so.dlp.facade.dispo.DispoFacadeTest.setUp(DispoFacadeTest.java:78)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
	at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: dlp] Unable to build EntityManagerFactory
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
	at de.so.dlp.persistence.dao.BaseDAO.<clinit>(BaseDAO.java:47)
	... 27 more
Caused by: org.hibernate.HibernateException: Wrong column type in DLP.COOPERATION_GROUP_FORM_ASSIGNMENT for column ID_COOPERATION_FORM. Found: integer, expected: bigint
	at org.hibernate.mapping.Table.validateColumns(Table.java:261)
	at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1089)
	at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:116)
	at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:317)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
	... 31 more

Außerdem ist Hibernate nur ne Übergangslösung. Später kommt dann die SAP (NetWeaver) Seuche ins Haus :eek:
 
Status
Nicht offen für weitere Antworten.

Oben