Hibernate & hsqldb: Problem bei db-update

Status
Nicht offen für weitere Antworten.

norman

Top Contributor
hallo zusammen,

da ich mich derzeit in hibernate einarbeite habe ich als test eine persistene klasse Message im package hello geschrieben. dazu auch ein entsprechendes mapping file.
hat auch prima geklappt, ich kann neue Messages in die db speichern und sie mir auch wieder anzeigen lassen.

2. schritt war der versuch, eine Message die bereits in der db ist, zu ändern (code siehe unten)..

zunächst mal die fehlermeldung:
Code:
Exception in thread "main" org.hibernate.HibernateException: CGLIB Enhancement failed: hello.Message
	at org.hibernate.proxy.CGLIBLazyInitializer.getProxy(CGLIBLazyInitializer.java:102)
	at org.hibernate.proxy.CGLIBProxyFactory.getProxy(CGLIBProxyFactory.java:47)
	at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
	at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121)
	at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232)
	at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173)
	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
	at org.hibernate.impl.SessionImpl.load(SessionImpl.java:781)
	at org.hibernate.impl.SessionImpl.load(SessionImpl.java:774)
	at hello.Testklasse.updateMessage(Testklasse.java:54)
	at hello.Testklasse.main(Testklasse.java:66)
Caused by: java.lang.InstantiationException: hello.Message$$EnhancerByCGLIB$$3b1b87f7
	at java.lang.Class.newInstance0(Class.java:335)
	at java.lang.Class.newInstance(Class.java:303)
	at org.hibernate.proxy.CGLIBLazyInitializer.getProxy(CGLIBLazyInitializer.java:99)
	... 11 more

und wann tritt der auf? ==> Zeile 54
Code:
package hello;

import java.util.Iterator;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;


public class Testklasse {
	
	private SessionFactory mySessionFactory; // nur 1 SessionFactory => not lightweight!
											 // Session = ligthweight -> kann viele geben 
	
	public Testklasse() {
		Configuration cfg = new Configuration(); // to specify location of mapping-files & properties
		cfg.configure();
		try {
			this.mySessionFactory = cfg.buildSessionFactory();
		} catch (HibernateException e) {
			e.printStackTrace();
		}
	}

	
	public void saveMsgToDataBase(Message message) throws HibernateException {		
		Session session = this.mySessionFactory.openSession();
		Transaction tx = session.beginTransaction();
		session.save(message);
		tx.commit();
		session.close();
	}
	
	public void retrieveAllMessages() throws HibernateException {
		Session session = this.mySessionFactory.openSession();
		Transaction tx = session.beginTransaction();
		List messages = session.find("from Message as m order by m.id asc");
		System.out.println(messages.size() + " message(s) found:");
		for (Iterator iter = messages.iterator(); iter.hasNext();) {
			Message message = (Message) iter.next();
			System.out.println(message);
		}
		tx.commit();
		session.close();
	}
	
	public void updateMessage(long msgId, String newText) {
		Session session = this.mySessionFactory.openSession();
		Transaction tx = session.beginTransaction();
		// next line throws HibernateException: CGLIB Enhancement failed: hello.Message
		Message msg = (Message) session.load(Message.class, new Long(msgId)); 
		msg.setText(newText);
		msg.setIsUpdated(true);
		tx.commit();
		session.close();
	}
	
	public static void main(String[] args) throws InterruptedException {
		Testklasse tk = new Testklasse();
		
		tk.retrieveAllMessages();
		Thread.sleep(1000);	System.out.println("\n");
		tk.updateMessage(1, "txtWurdeGeändert");
		tk.retrieveAllMessages();		
	}
}


google brachte ein paar hinweise, man solle doch alle CGLIBs aus dem projekt nehmen, aber dann kann ich nicht mehr kompilieren.

falls wichtig kann ich auch die Message-klasse und mapping file posten, spielt aber keine rolle oder?


grüße
norman
 

Bleiglanz

Gesperrter Benutzer
du brauchst alle CGLIBs im Classpath, weil Hibernate selbst mit Bytecode herumwurstelt??

also nicht rausnehmen?
 

norman

Top Contributor
Bleiglanz hat gesagt.:
du brauchst alle CGLIBs im Classpath, weil Hibernate selbst mit Bytecode herumwurstelt??

also nicht rausnehmen?
so auch meine meinung, aber dann kommt eben der oben genannte fehler "CGLIB Enhandement failed".. :bahnhof:
hier die libs:
 
I

Ivanhoe

Gast
Die Hibernate-Exceptions sind oft unübersichtlich. Kannst du auch deine hibernate.cfg.xml bzw. hibernate.properties hier posten?
 

norman

Top Contributor
jup..hier die hibernate.cfg.xml:
Code:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
        <property name="connection.username">sa</property>
        <property name="connection.password"></property>

        
        <property name="connection.pool_size">1</property>

        
        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>

        
        <property name="current_session_context_class">thread</property>

        
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        
        <property name="show_sql">true</property>

        
      

        <mapping resource="hello/Message.hbm.xml"/> 

    </session-factory>

</hibernate-configuration>
 

Ivanhoe

Mitglied
versuch mal mit session.get(....) anstatt session.load(...)
Funktioniert retrieveAllMessages() überhaupt?
 

norman

Top Contributor
Ivanhoe hat gesagt.:
versuch mal mit session.get(....) anstatt session.load(...)
Funktioniert retrieveAllMessages() überhaupt?
mit get funktioniert es, d.h. ich konnte das objekt verändern (oder den eintrag in der tabelle).

der fehler: "CGLIB Enhancement failed: hello.Message" bleibt jedoch und taucht im übrigen jetzt auch auf, wenn ich die daten nur holen will.

ansonsten scheint es aber zu funktionieren.
beispiel:
1. daten ausgeben
2. den text von message nr 1 ändern
3. daten ausgeben
:arrow:
Code:
public static void main(String[] args) {
		Testklasse tk = new Testklasse();
		
		tk.retrieveAllMessages();
		System.out.println("\n");
		tk.updateMessage(1, "txtWurdeGeändert");
		tk.retrieveAllMessages();		
	}
Ausgabe:
Code:
10:33:09,033 ERROR BasicLazyInitializer: CGLIB Enhancement failed: hello.Message
java.lang.NoSuchMethodError: net.sf.cglib.proxy.Enhancer.setInterceptDuringConstruction(Z)V
	at org.hibernate.proxy.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:118)
	at org.hibernate.proxy.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:41)
	at org.hibernate.tuple.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:161)
	at org.hibernate.tuple.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:131)
	at org.hibernate.tuple.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
	at org.hibernate.tuple.TuplizerLookup.create(TuplizerLookup.java:64)
	at org.hibernate.tuple.EntityMetamodel.<init>(EntityMetamodel.java:257)
	at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:412)
	at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:108)
	at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
	at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:216)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1176)
	at hello.Testklasse.<init>(Testklasse.java:22)
	at hello.Testklasse.main(Testklasse.java:63)
10:33:09,063  WARN PojoEntityTuplizer: could not create proxy factory for:hello.Message
org.hibernate.HibernateException: CGLIB Enhancement failed: hello.Message
	at org.hibernate.proxy.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:132)
	at org.hibernate.proxy.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:41)
	at org.hibernate.tuple.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:161)
	at org.hibernate.tuple.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:131)
	at org.hibernate.tuple.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
	at org.hibernate.tuple.TuplizerLookup.create(TuplizerLookup.java:64)
	at org.hibernate.tuple.EntityMetamodel.<init>(EntityMetamodel.java:257)
	at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:412)
	at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:108)
	at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
	at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:216)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1176)
	at hello.Testklasse.<init>(Testklasse.java:22)
	at hello.Testklasse.main(Testklasse.java:63)
Caused by: java.lang.NoSuchMethodError: net.sf.cglib.proxy.Enhancer.setInterceptDuringConstruction(Z)V
	at org.hibernate.proxy.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:118)
	... 13 more
Hibernate: select message0_.MESSAGE_ID as MESSAGE1_0_, message0_.MESSAGE_TEXT as MESSAGE2_0_, message0_.NEXT_MESSAGE_ID as NEXT3_0_, message0_.MESSAGE_SENDER as MESSAGE4_0_, message0_.MESSAGE_EMPFAENGER as MESSAGE5_0_, message0_.MESSAGE_ISUPDATED as MESSAGE6_0_ from MESSAGES message0_ order by message0_.MESSAGE_ID asc
4 message(s) found:
ID: 1	Text: ich werde geändert	Sender: einSender	Empfänger: einEmpf	isUpdated: false
ID: 2	Text: messageOhneSF	Sender: defaultSender	Empfänger: defaultEmpf	isUpdated: false
ID: 3	Text: Alles klar, Joe	Sender: Norman wars	Empfänger: Joe bekommts	isUpdated: false
ID: 4	Text: neueMsg	Sender: defaultSender	Empfänger: defaultEmpf	isUpdated: false


Hibernate: select message0_.MESSAGE_ID as MESSAGE1_0_0_, message0_.MESSAGE_TEXT as MESSAGE2_0_0_, message0_.NEXT_MESSAGE_ID as NEXT3_0_0_, message0_.MESSAGE_SENDER as MESSAGE4_0_0_, message0_.MESSAGE_EMPFAENGER as MESSAGE5_0_0_, message0_.MESSAGE_ISUPDATED as MESSAGE6_0_0_ from MESSAGES message0_ where message0_.MESSAGE_ID=?
Hibernate: update MESSAGES set MESSAGE_TEXT=?, NEXT_MESSAGE_ID=?, MESSAGE_SENDER=?, MESSAGE_EMPFAENGER=?, MESSAGE_ISUPDATED=? where MESSAGE_ID=?
Hibernate: select message0_.MESSAGE_ID as MESSAGE1_0_, message0_.MESSAGE_TEXT as MESSAGE2_0_, message0_.NEXT_MESSAGE_ID as NEXT3_0_, message0_.MESSAGE_SENDER as MESSAGE4_0_, message0_.MESSAGE_EMPFAENGER as MESSAGE5_0_, message0_.MESSAGE_ISUPDATED as MESSAGE6_0_ from MESSAGES message0_ order by message0_.MESSAGE_ID asc
4 message(s) found:
ID: 1	Text: txtWurdeGeändert	Sender: einSender	Empfänger: einEmpf	isUpdated: true
ID: 2	Text: messageOhneSF	Sender: defaultSender	Empfänger: defaultEmpf	isUpdated: false
ID: 3	Text: Alles klar, Joe	Sender: Norman wars	Empfänger: Joe bekommts	isUpdated: false
ID: 4	Text: neueMsg	Sender: defaultSender	Empfänger: defaultEmpf	isUpdated: false
 

norman

Top Contributor
hmm....die fehler werden, wie ich jetzt bemerkt habe, von log4j ausgegeben.
heißt das, ich kann sie vernachlässigen? ???:L
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Hibernate, HSQLDB und UNIQUE Datenbankprogrammierung 2
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
I Hibernate Predicate mit IN Clause "Unaware how to convert value to requested type" Datenbankprogrammierung 0
T org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ..., could not initialize proxy - no Session Datenbankprogrammierung 5
T Realisierungsvorschläge Hibernate SQL Datenbankprogrammierung 1
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
damike84 Hibernate: persistieren eines Graphen Datenbankprogrammierung 2
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
OnDemand Hibernate Realationen Datenbankprogrammierung 7
OnDemand Hibernate ManyToOne Datenbankprogrammierung 5
D Hibernate oneToMany Syntaxfehler Datenbankprogrammierung 3
D Hibernate Error: NoSuchMethodError Datenbankprogrammierung 4
D hibernate mit postgreSQL Datenbankprogrammierung 3
S MySQL Hibernate: Fehler bei Verwendung von 2 unterschiedlichen Enumration Datenbankprogrammierung 3
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
OnDemand Hibernate OneToMany ManyToOne Datenbankprogrammierung 61
J Hibernate One-To-One mit Where Klausel Datenbankprogrammierung 6
L hibernate.cfg.xml Could not parse configuration Datenbankprogrammierung 0
L H2 Hibernate definieren? Datenbankprogrammierung 1
T JPA Mapping Enum (hibernate 5) Datenbankprogrammierung 1
H In hibernate.cfg.xml schreiben und auslesen Datenbankprogrammierung 0
K Hibernate: Ein Fluch Datenbankprogrammierung 3
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
S JpaRepositories & Hibernate: ungewolltes trim() in findBy Datenbankprogrammierung 7
S MySQL hibernate exception: illegal state exception : entityManagerFactory is closed Datenbankprogrammierung 5
S Hibernate: Verschiedene Klassen zurückgeben. Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
perlenfischer1984 Hibernate mit final members Datenbankprogrammierung 3
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
N Sqlite3 und Hibernate Datenbankprogrammierung 3
A Hibernate Cache leeren Datenbankprogrammierung 4
I MySQL Hibernate zu viele Queries Datenbankprogrammierung 2
Psypsy Hibernate / JPA erkennen von schon gespeicherten Objekten Datenbankprogrammierung 4
Psypsy Hibernate / JPA OneToOne MappedBy Frage Datenbankprogrammierung 2
J Hibernate + DTOs - DTOs in DAOs verwenden? Datenbankprogrammierung 1
S Hibernate-Konfiguration : Unverständliche Ausgabe beim Ausführen Datenbankprogrammierung 0
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
J Hibernate + HSQL embedded Datenbankprogrammierung 2
P Hibernate Einstieg Datenbankprogrammierung 5
C Hibernate und createQuery Datenbankprogrammierung 2
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Datenbankprogrammierung 4
G H2 Hibernate - wie joins machen Datenbankprogrammierung 1
D Hibernate: Zustand eines Objekts erkennen? Datenbankprogrammierung 0
D Unterschiede Hibernate Vs. Java Persistence API Datenbankprogrammierung 8
I Hibernate / JPA Index hinzufügen Datenbankprogrammierung 1
X Hibernate Cache Verständnisproblem Datenbankprogrammierung 0
T Hibernate und inner class Datenbankprogrammierung 0
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
T Hibernate DAO gute Tutorials/Bücher gesucht Datenbankprogrammierung 0
C Hibernate: could not resolve property Datenbankprogrammierung 1
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
M Hibernate - Save Child wenn nötig Datenbankprogrammierung 10
M DAO's + Hibernate Theorie Datenbankprogrammierung 4
F Hibernate - verschiedene Schemen Datenbankprogrammierung 7
D Hibernate SaveOrUpdate Exception Datenbankprogrammierung 2
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
E MySQL Hibernate mit JaxWS führt zu LazyInitialization Exception Datenbankprogrammierung 8
L Einarbeitung in Hibernate -> wenn gute SQL Kenntnisse vorhanden? Datenbankprogrammierung 2
B DB2 Hibernate findet Datenbank nicht Datenbankprogrammierung 18
K JPA / Hibernate Annotations Datenbankprogrammierung 4
M JPA / Hibernate mit Postgres DB Datenbankprogrammierung 3
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
E MySQL Hibernate ( Anfänger ) Datenbankprogrammierung 3
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
M Hibernate Foreign Key definieren Datenbankprogrammierung 4
M Abstrakte Klassen Hibernate Datenbankprogrammierung 4
D Mit Hibernate (mit Annotation) auf Views zugreifen Datenbankprogrammierung 2
M [Hibernate]Abgleich eines lokalen Objekts mit dem Zustand aus der Datenbank. Datenbankprogrammierung 3
P Mit Hibernate mehrere Datensätze löschen Datenbankprogrammierung 7
P Probleme mit meinem 1. Hibernate Beispiel Datenbankprogrammierung 3
P erste Schritte mit Hibernate Datenbankprogrammierung 3
V Hibernate Interfaces von anderem Projekt Datenbankprogrammierung 2
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
B Hibernate und portierbare Datenbank Datenbankprogrammierung 3
qwerqer [Hibernate] Mappingvarianten Datenbankprogrammierung 2
lumo Teneo Hibernate & JPA Datenbankprogrammierung 15
Z JPA mit Hibernate - Unable to build EntityManagerFactory Datenbankprogrammierung 7
Dit_ Hibernate, effiziente SQL-Abfrage definieren Datenbankprogrammierung 5
K Hibernate vs. JDBC Datenbankprogrammierung 4
J Hibernate Info 593 ? Datenbankprogrammierung 4
J Erstellen der SessionFactory in Hibernate 4.1 Datenbankprogrammierung 2
L PostgreSQL Hibernate-Frage Datenbankprogrammierung 2
X MySQL Hibernate: Massenupdate auf unbekannte Tabelle Datenbankprogrammierung 4
N hibernate: datasource Datenbankprogrammierung 7
H MySQL Hibernate: Updaten vereinfachen Datenbankprogrammierung 2
T Hibernate Division zweier Summen Datenbankprogrammierung 4
B MySQL Fehler: Cannot open connection mit Tomcat7, Hibernate und MySQL Datenbankprogrammierung 4
F GWT und Hibernate - gwt.dev.Compler not found Datenbankprogrammierung 3
M NestedTransaction- Exception in Hibernate Datenbankprogrammierung 15
O Löschen vieler Datensätze mit Hibernate Datenbankprogrammierung 11

Ähnliche Java Themen

Neue Themen


Oben