[Hibernate] ReverseEngineering - Eigene Strategy verwenden?

X5-599

Top Contributor
Hallo,

da ja anscheinend niemand mehr in das offizielle Hibernate-Forum reinschaut, frage ich einfach nochmal hier.

Ich schaff' es einfach nicht das ReverseEngineering mit dem Eclipse Plugin zum Laufen zu bringen. Zumindest nicht mit einer Custom Strategy. Es kommt immer folgender Fehler:

Code:
org.hibernate.console.HibernateConsoleRuntimeException: Could not create or find my.package.CustomRevEngStrategy with one argument delegate constructor
Could not create or find my.package.CustomRevEngStrategy with one argument delegate constructor
  java.lang.ClassNotFoundException: my.package.CustomRevEngStrategy
  my.package.CustomRevEngStrategy
    java.lang.ClassNotFoundException: my.package.CustomRevEngStrategy
    my.package.CustomRevEngStrategy

Als wenn meine Klasse den (ausdrücklich) erforderlichen Konstruktor, der einen delegate an super() weiterleitet, nicht hätte.
Nochmal zur visuellen Bestätigung, mein Code sieht so aus:

Java:
public class CustomRevEngStrategy extends DelegatingReverseEngineeringStrategy
{
	
	public CustomRevEngStrategy(ReverseEngineeringStrategy delegate)
	{
		super(delegate);
	}
	
	
	
	@SuppressWarnings("unchecked")
	@Override
	public Map columnToMetaAttributes(TableIdentifier identifier, String column)
	{
        return super.columnToMetaAttributes(identifier, column);
	}

}

Wo liegt in dem bischen Code mein Fehler???
 
Ist ja keine Entity Klasse... ausserdem hat die DelegatingReverseEngineeringStrategy Klasse nunmal nur einen Kontruktor mit Delegate als Parameter. Also muss man, wenn man davon ableitet natürlich diesen aufrufen.
Ich hab ihn auch schon versucht auszutricksen indem ich meinen Kontruktor ohne Parameter schreibe und den super mit einem new DefaultReverseEngineeringStrategy() aufrufe... Beides Mal derselbe Fehler...

Ob nun:
Java:
public CustomRevEngStrategy()
{
		super(new DefaultReverseEngineeringStrategy());
}

oder:

Java:
public CustomRevEngStrategy(ReverseEngineeringStrategy delegate)
{
		super(delegate);
}

Ich weiß echt nicht mehr weiter...
 
Ich weiß nun endlich woran es liegt. Zentrale Punkt ist die Hibernate Configuration. "Was ist das?" -Genau was ich mich auch fragte... Das ist das Dingens was man(ich) ein Mal anlegt um mit Hibernate ReverseEngineering arbeiten zu können. Doch beim Anlegen dieser Konfiguration muss man ein bestehendes Eclipse Projekt angeben. Und das ist der Knackpunkt. Dieses Projekt ist gleichzeitig der class path, den die Hibernate Konfiguration benutzt.
d.h. die Custom Strategy Klasse muss in diesem Projekt liegen!

Da ich viele unterschiedliche (Test)Projekte habe in Eclipse, und ich keinen Grund sah (warum auch) für jedes dieser inhaltlich gleichen Projekte eine identische Konfiguration anzulegen, kam es also wie es kommen musste. Eine drei tägige Web Recherche um diesen nicht für ein öffentliches Forum zu gebrauchenden Kraftausdruck Fehler zu entschlüsseln!

Warum bin ich so sauer? Weil es offensichtlich nicht an einem falschen/fehlenden Konstruktor liegt (wie diese tolle Fehlermeldung ja vermuten lässt), sondern an einem simplen class path error.

Eine Custom Strategy, die funktionert sieht z.B. so aus:

Java:
public class CustomRevEngStrategy extends DelegatingReverseEngineeringStrategy
{  
    public CustomRevEngStrategy(ReverseEngineeringStrategy delegate)
    {
        super(delegate);
    }
}
 
Zuletzt bearbeitet:

Zurück
Oben