Hi,
Froestel, Danke nochmal für Deine Hilfe.
Das mit dem Buddy Loading hab ich mir mal zu Gemüte geführt, aber so richtig habe ich das glaube ich noch nicht kapiert.
Soll das darauf hinauslaufen, daß die Applikation (Projekt namens App) dem MyHibernateAccess Projekt sagt, dass es anstatt die MyHibernateAccess.Country Klasse die App.Country Klasse laden soll?
Ich habe zwischenzeitlich eine ganz simple Lösung gefunden, wobei ich mir aber mangels JVM Background Wissen nicht im klaren bin, ob das ein Bug ist oder eine 100%ige Lösung:
Im Projekt MyHibernateAccess1. Man führt eine neue abstrakte Klasse ein, AbstractCountry
diese implementiert die Entity
Code:
package hibr.country;
public abstract class AbstractCountry
{
protected Integer countryid;
...
}
2. Man erstellt eine leere Klasse Country die von AbstractCountry erbt
Code:
package hibr.country;
public class Country extends AbstractCountry{}
3. Man erstellt ein DAO, dass hibr.country.Country Objekte persistieren kann.
4. Mappingdatei:
Code:
...
<class name="hibr.country.Country" table="country" lazy="true">
...
Im Projekt App3. Man erstellt ebenfalls eine Klasse Country im exakt selben package das auch von AbstractCountry erbt. Diese Klasse kann dann noch beliebig erweitert werden.
Code:
package hibr.country;
public class Country extends AbstractCountry
{
@Override
public String toString()
{
return this.HUMPPAAA();
}
public String HUMPPAAA()
{
return "Humppakäräjät!!";
}
}
Hier ein code zum Testen
Code:
...
public static void main(String[] args)
{
CountryDAO ctrydao = new CountryDAO();
List<Country> ctries = ctrydao.findAll();
String humppa = ctries.get(0).HUMPPAAA();
}
...
Humppa enthält nach dem Ausführen den Text "Humppakäräjät!!". Es wurde also von der JVM die App.hibr.country.Country Klasse geladen und nicht die aus MyHibernateAccess.
Gibt es eine Regel wann bei mehrfach vorhandenen Klassen welche Klasse ausgewählt wird, oder ist das willkürlich und kann sich z.B. beim nächsten JAVA Update wieder ändern?
Gruß
Humppa!