Ich nutze für meine Hibernate-Klassen Annotations und muss den Entity-Namen manuell setzen.
Zunächst dachte ich, es würde reichen, @Entity(name="MyEntityName") zu setzen. Hibernate
irgnoriert dies aber und nutzt weiterhin den vollqualifizierten Klassennamen. Bei meiner Recherche
stoss ich dann auf diesen Post:
https://forum.hibernate.org/viewtopic.php?p=2350219Demnach ist es aus irgendwelchen Gründen der Spezifikation so, dass der Entity-Name in Criterias
(warum nicht auch in HQL?!) ignoriert wird.
Mein nächster Versuch war dann, den Entity-Namen manuell zu setzen. Als test dient
der folgende Codeschnipsel. Dort hole ich mir die betreffende PersistentClass aus der
Configuration von Hibernate, setze den Entity-Namen neu, gebe ihn zur Sicherheit nochmal
aus und suche danach über die Configuration nach der neu benannten Entity-Klasse:
Code:
Iterator<org.hibernate.mapping.PersistentClass> it = hibernateConfiguration.getClassMappings();
while(it.hasNext())
{
org.hibernate.mapping.PersistentClass pc = it.next();
if(pc.getClassName().equals(MyAnnotatedClass.class.getName()))
{
pc.setEntityName("NewEntityName");
System.out.println(pc.getEntityName());
}
}
System.out.println(hibernateConfiguration.getClassMapping("NewEntityName"));
Obwohl der EntityName übernommen wird, bringt die letzte Zeile keine Klasse sondern nur
null hervor (dabei wird als Parameter für getClassMapping() der Entity-Name verlangt).
Wieso ist das so? Gibt es eine andere Möglichkeit?