# Hibernate Instrumentation Problem



## GEinAst5678651 (21. Dez 2009)

Hallo.

Ich würde gerne das Hibernate-Feature nutzen, dass er OneToOne und ManyToOne erst auf Anforderung holt (FetchType.LAZY).

Dazu muss Hibernate ja mit Javassist die Klassen bearbeiten. Das habe ich auch soweit eingerichtet und beim Compilieren läuft Javassist durch und passt die Klassen an.

Wenn ich nun jedoch die Anwendung starte, kriege ich eine NoSuchMethod Exception:


```
java.lang.NoSuchMethodError: tables.vorgang.Angebot.$javassist_read_id()Ljava/lang/Long;
```

Das macht er bei jeder Tabelle dann und steigt aus. Ich nutze Hibernate 3.3.2.GA. Per Google habe ich nur den Hinweis gefunden, dass wirklich die entsprechende Javassist-Version genutzt wird und nicht ausversehen die falsche. Das habe ich sichergestellt, da im lokalen Maven-Repo wirklich nur die eine Javassist-Lib drinnen ist.

Weiß jemand woran das liegen kann? Wenn mehr Infos gewünscht sind, ruhig nachfragen


----------



## maki (21. Dez 2009)

Schon geprüft ob mehrere Versionen der lib referenziert werden?

Wie sieht denn die Pom aus?


----------



## GEinAst5678651 (21. Dez 2009)

maki hat gesagt.:


> Schon geprüft ob mehrere Versionen der lib referenziert werden?



Ja, wie ich geschrieben habe, gibt es im Maven-Repo nur die eine Version.



maki hat gesagt.:


> Wie sieht denn die Pom aus?



Die POM ist so:


```
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.firm.Prog</groupId>
    <artifactId>Prog</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>Prog</name>
    <url>http://maven.apache.org</url>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <tasks>
                        <taskdef name="instrument" classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
                            <classpath>
                                <path refid="maven.runtime.classpath" />
                                <path refid="maven.plugin.classpath" />
                            </classpath>
                        </taskdef>
                        <instrument verbose="true">
                            <fileset dir="${project.build.outputDirectory}">
                                <include name="**/tables/**/*.class" />
                            </fileset>
                        </instrument>
                    </tasks>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>com.miglayout</groupId>
            <artifactId>miglayout</artifactId>
            <version>3.7.1</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>ejb3-persistence</artifactId>
            <version>1.0.2.GA</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>3.3.2.GA</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.4.0.GA</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>3.4.0.GA</version>
            <scope>compile</scope>
            <exclusions>
                <exclusion>
                    <groupId>javassist</groupId>
                    <artifactId>javassist</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-c3p0</artifactId>
            <version>3.3.2.GA</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.5.9.RC1</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.5.9.RC1</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.11.0.GA</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>3.5.3</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>com.toedter</groupId>
            <artifactId>jcalendar</artifactId>
            <version>1.3.2</version>
            <type>jar</type>
        </dependency>
    </dependencies>

    <repositories>
        <repository>
            <id>Hibernate Repo</id>
            <url>http://repository.jboss.org/maven2/</url>
        </repository>
    </repositories>
</project>
```


----------



## GEinAst5678651 (21. Dez 2009)

Hab's gefunden...

Die Tabelle von der alle Ableiten war nicht unter /tables/, das habe ich übersehen. Sry. 

Jetzt geht's.


----------



## GEinAst5678651 (21. Dez 2009)

Oder auch nicht, er lädt die Daten trotzdem nicht "Lazy"... mal weiterschauen. Aber das NoSuchMethod ist weg...


----------



## GEinAst5678651 (21. Dez 2009)

Jetzt geht's komischerweise.... scheint wohl am kompletten Clean und Build gelegen zu haben....


----------

