-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 9 posts ] 
Author Message
 Post subject: SELECT funktioniert perfekt, INSERT nur fehlerhaft
PostPosted: Sun Mar 12, 2006 2:10 pm 
Newbie

Joined: Sun Mar 12, 2006 12:59 pm
Posts: 6
Ich verwende einen MySQL-Datenbankserver der Version 4.1.12. Darin habe ich eine MyISAM-Datenbank "test" mit dem Zeichensatz UTF-8. Sämtliche Tabellen und Textfelder in den Tabellen sind ebenfalls UTF-8.

Wenn ich nun mit Hibernate 3.1.2 über den MySQL Connector/J 3.1.12 Daten aus der Datenbank auslese und auf einer JSP-Seite anzeige, funktioniert alles wunderbar. Alles wird so dargestellt, wie es in der Datenbank steht. Ganz gleich, ob es deutsche, griechische, chinesische oder sonstige Schriftzeichen sind.

Jetzt kommt aber der Haken:
Füge ich mit Hibernate einen Datensatz in die Tabelle ein, wird der INSERT-Befehl zwar ausgeführt, aber in der Datenbank steht anschließend Murks - also nicht das, was ich eigentlich einfügen wollte. Textfelder und Zahlenfelder sind gleichermaßen betroffen. Einfügen will ich:
events.Event{hallo=2468, title=1234, date=(?.?.?.), id=1002}
Wenn ich den Datensatz wieder auslese, bekomme ich aber immer:
events.Event{hallo=50396416, title=, date=, id=184550144}

Und nun der interessante Punkt:
Füge ich anstatt mit Hibernate direkt mit JDBC über denselben MySQL Connector/J 3.1.12 einen Datensatz in die Datenbank ein, funktioniert es hingegen perfekt.
Folglich habe ich daraus geschlossen, daß das Problem schon vor dem Connector auftritt, also in Hibernate. Leider liefert das ausführlichste Hibernate-Logging bis zum letzten Augenblick noch die richtigen Daten - also die, die ich wirklich in die Datenbank einfügen wollte.

Was passiert da? Nach eineinhalb Tagen Probieren und Recherchieren in den Hibernate-Dokumentationen und FAQs und mit Google stehe ich da, ohne auch nur noch die geringste Idee zu haben, woran es jetzt noch liegen könnte. :-( Meine letzte Hoffnung ist, daß ich hier zu meinem Problem Hilfe finde.

Es folgt das ausführliche Logging:

Using CATALINA_BASE: /home/user/.netbeans/5.0/jakarta-tomcat-5.5.9_base
Using CATALINA_HOME: /opt/netbeans-5.0/enterprise2/jakarta-tomcat-5.5.9
Using CATALINA_TMPDIR: /home/user/.netbeans/5.0/jakarta-tomcat-5.5.9_base/temp
Using JRE_HOME: /usr/java/jdk1.5.0_06
12.03.2006 18:14:25 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8084
12.03.2006 18:14:25 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 741 ms
12.03.2006 18:14:26 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
12.03.2006 18:14:26 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.5.9
12.03.2006 18:14:26 org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
12.03.2006 18:14:28 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8084
12.03.2006 18:14:28 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
12.03.2006 18:14:28 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/17 config=null
12.03.2006 18:14:28 org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
12.03.2006 18:14:28 org.apache.catalina.startup.Catalina start
INFO: Server startup in 2980 ms
12.03.2006 18:14:28 org.apache.catalina.core.StandardContext reload
INFO: Reloading this Context has started
18:14:31,745 INFO Environment:479 - Hibernate 3.1.2
18:14:31,753 INFO Environment:509 - hibernate.properties not found
18:14:31,758 INFO Environment:525 - using CGLIB reflection optimizer
18:14:31,759 INFO Environment:555 - using JDK 1.4 java.sql.Timestamp handling
18:14:31,857 INFO Configuration:1308 - configuring from resource: /hibernate.cfg.xml
18:14:31,859 INFO Configuration:1285 - Configuration resource: /hibernate.cfg.xml
18:14:31,921 DEBUG DTDEntityResolver:42 - trying to locate http://hibernate.sourceforge.net/hibern ... on-3.0.dtd in classpath under org/hibernate/
18:14:31,922 DEBUG DTDEntityResolver:56 - found http://hibernate.sourceforge.net/hibern ... on-3.0.dtd in classpath
18:14:31,966 DEBUG Configuration:1269 - connection.driver_class=com.mysql.jdbc.Driver
18:14:31,975 DEBUG Configuration:1269 - connection.url=jdbc:mysql://localhost/test
18:14:31,976 DEBUG Configuration:1269 - connection.username=root
18:14:31,976 DEBUG Configuration:1269 - connection.password=
18:14:31,977 DEBUG Configuration:1269 - connection.useUnicode=true
18:14:31,978 DEBUG Configuration:1269 - connection.characterEncoding=utf-8
18:14:31,978 DEBUG Configuration:1269 - connection.characterSetResults=utf-8
18:14:31,979 DEBUG Configuration:1269 - connection.clobCharacterEncoding=utf-8
18:14:31,984 DEBUG Configuration:1269 - c3p0.max_size=2
18:14:31,985 DEBUG Configuration:1269 - c3p0.min_size=2
18:14:31,985 DEBUG Configuration:1269 - c3p0.timeout=5000
18:14:31,986 DEBUG Configuration:1269 - c3p0.max_statements=100
18:14:31,986 DEBUG Configuration:1269 - c3p0.idle_test_period=3000
18:14:31,987 DEBUG Configuration:1269 - c3p0.acquire_increment=2
18:14:31,987 DEBUG Configuration:1269 - c3p0.validate=false
18:14:31,988 DEBUG Configuration:1269 - dialect=org.hibernate.dialect.MySQLDialect
18:14:31,991 DEBUG Configuration:1269 - current_session_context_class=thread
18:14:31,991 DEBUG Configuration:1269 - cache.provider_class=org.hibernate.cache.NoCacheProvider
18:14:31,992 DEBUG Configuration:1269 - show_sql=true
18:14:31,994 DEBUG Configuration:1269 - format_sql=true
18:14:31,995 DEBUG Configuration:1269 - max_fetch_depth=1
18:14:31,995 DEBUG Configuration:1269 - jdbc.batch_versioned_data=true
18:14:31,996 DEBUG Configuration:1269 - jdbc.use_streams_for_binary=true
18:14:31,998 DEBUG Configuration:1269 - cache.region_prefix=hibernate.test
18:14:32,003 DEBUG Configuration:1269 - cache.provider_class=org.hibernate.cache.HashtableCacheProvider
18:14:32,013 DEBUG Configuration:1464 - null<-org.dom4j.tree.DefaultAttribute@1c208b0 [Attribute: name resource value "events/Event.hbm.xml"]
18:14:32,014 INFO Configuration:469 - Reading mappings from resource: events/Event.hbm.xml
18:14:32,015 DEBUG DTDEntityResolver:42 - trying to locate http://hibernate.sourceforge.net/hibern ... ng-3.0.dtd in classpath under org/hibernate/
18:14:32,017 DEBUG DTDEntityResolver:56 - found http://hibernate.sourceforge.net/hibern ... ng-3.0.dtd in classpath
18:14:32,138 INFO HbmBinder:309 - Mapping class: events.Event -> EVENTS
18:14:32,150 DEBUG HbmBinder:1261 - Mapped property: id -> EVENT_ID
18:14:32,166 DEBUG HbmBinder:1261 - Mapped property: date -> EVENT_DATE
18:14:32,167 DEBUG HbmBinder:1261 - Mapped property: title -> title
18:14:32,167 DEBUG HbmBinder:1261 - Mapped property: hallo -> hallo
18:14:32,173 INFO Configuration:1419 - Configured SessionFactory: null
18:14:32,173 DEBUG Configuration:1420 - properties: {hibernate.jdbc.batch_versioned_data=true, show_sql=true, java.vendor=Sun Microsystems Inc., catalina.base=/home/user/.netbeans/5.0/jakarta-tomcat-5.5.9_base, c3p0.min_size=2, hibernate.connection.characterEncoding=utf-8, hibernate.connection.url=jdbc:mysql://localhost/test, sun.management.compiler=HotSpot Client Compiler, catalina.useNaming=true, os.name=Linux, sun.boot.class.path=/usr/java/jdk1.5.0_06/jre/lib/rt.jar:/usr/java/jdk1.5.0_06/jre/lib/i18n.jar:/usr/java/jdk1.5.0_06/jre/lib/sunrsasign.jar:/usr/java/jdk1.5.0_06/jre/lib/jsse.jar:/usr/java/jdk1.5.0_06/jre/lib/jce.jar:/usr/java/jdk1.5.0_06/jre/lib/charsets.jar:/usr/java/jdk1.5.0_06/jre/classes, hibernate.current_session_context_class=thread, hibernate.c3p0.max_size=2, java.vm.specification.vendor=Sun Microsystems Inc., c3p0.max_size=2, java.runtime.version=1.5.0_06-b05, c3p0.acquire_increment=2, hibernate.c3p0.min_size=2, connection.characterSetResults=utf-8, hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider, user.name=user, shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar, tomcat.util.buf.StringCache.byte.enabled=true, connection.driver_class=com.mysql.jdbc.Driver, current_session_context_class=thread, hibernate.c3p0.timeout=5000, user.language=de, java.naming.factory.initial=org.apache.naming.java.javaURLContextFactory, sun.boot.library.path=/usr/java/jdk1.5.0_06/jre/lib/i386, dialect=org.hibernate.dialect.MySQLDialect, max_fetch_depth=1, connection.clobCharacterEncoding=utf-8, java.version=1.5.0_06, java.util.logging.manager=org.apache.juli.ClassLoaderLogManager, c3p0.validate=false, user.timezone=Europe/Berlin, sun.arch.data.model=32, java.endorsed.dirs=, sun.cpu.isalist=, sun.jnu.encoding=ISO-8859-15, file.encoding.pkg=sun.io, package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.,sun.beans., file.separator=/, java.specification.name=Java Platform API Specification, hibernate.format_sql=true, hibernate.cglib.use_reflection_optimizer=true, java.class.version=49.0, user.country=DE, connection.url=jdbc:mysql://localhost/test, java.home=/usr/java/jdk1.5.0_06/jre, java.vm.info=mixed mode, sharing, hibernate.c3p0.validate=false, os.version=2.6.12-12mdk-i686-up-4GB, connection.useUnicode=true, c3p0.idle_test_period=3000, path.separator=:, connection.password=, java.vm.version=1.5.0_06-b05, hibernate.max_fetch_depth=1, hibernate.connection.password=, java.awt.printerjob=sun.print.PSPrinterJob, sun.io.unicode.encoding=UnicodeLittle, hibernate.connection.username=root, cache.region_prefix=hibernate.test, jdbc.use_streams_for_binary=true, package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper., hibernate.cache.region_prefix=hibernate.test, java.naming.factory.url.pkgs=org.apache.naming, user.home=/home/user, hibernate.connection.characterSetResults=utf-8, java.specification.vendor=Sun Microsystems Inc., java.library.path=/usr/java/jdk1.5.0_06/jre/lib/i386/client:/usr/java/jdk1.5.0_06/jre/lib/i386:/usr/java/jdk1.5.0_06/jre/../lib/i386, java.vendor.url=http://java.sun.com/, hibernate.connection.driver_class=com.mysql.jdbc.Driver, connection.username=root, java.vm.vendor=Sun Microsystems Inc., hibernate.dialect=org.hibernate.dialect.MySQLDialect, hibernate.jdbc.use_streams_for_binary=true, common.loader=${catalina.home}/common/classes,${catalina.home}/common/i18n/*.jar,${catalina.home}/common/lib/*.jar, java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition, java.class.path=/usr/java/jdk1.5.0_06/lib/tools.jar:/opt/netbeans-5.0/enterprise2/jakarta-tomcat-5.5.9/bin/bootstrap.jar:/opt/netbeans-5.0/enterprise2/jakarta-tomcat-5.5.9/bin/commons-logging-api.jar, hibernate.connection.clobCharacterEncoding=utf-8, c3p0.timeout=5000, java.vm.specification.name=Java Virtual Machine Specification, java.vm.specification.version=1.0, catalina.home=/opt/netbeans-5.0/enterprise2/jakarta-tomcat-5.5.9, sun.cpu.endian=little, sun.os.patch.level=unknown, java.io.tmpdir=/home/user/.netbeans/5.0/jakarta-tomcat-5.5.9_base/temp, java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi, server.loader=${catalina.home}/server/classes,${catalina.home}/server/lib/*.jar, os.arch=i386, java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment, java.ext.dirs=/usr/java/jdk1.5.0_06/jre/lib/ext, hibernate.connection.useUnicode=true, user.dir=/opt/netbeans-5.0/enterprise2/jakarta-tomcat-5.5.9/bin, hibernate.c3p0.idle_test_period=3000, line.separator=
, java.vm.name=Java HotSpot(TM) Client VM, cache.provider_class=org.hibernate.cache.HashtableCacheProvider, hibernate.c3p0.acquire_increment=2, file.encoding=ISO-8859-15, format_sql=true, connection.characterEncoding=utf-8, java.specification.version=1.5, c3p0.max_statements=100, jdbc.batch_versioned_data=true, hibernate.show_sql=true, hibernate.c3p0.max_statements=100}
18:14:32,174 DEBUG Configuration:1167 - Preparing to build session factory with filters : {}
18:14:32,175 DEBUG Configuration:1002 - processing extends queue
18:14:32,175 DEBUG Configuration:1006 - processing collection mappings
18:14:32,178 DEBUG Configuration:1017 - processing native query and ResultSetMapping mappings
18:14:32,178 DEBUG Configuration:1025 - processing association property references
18:14:32,179 DEBUG Configuration:1047 - processing foreign key constraints
18:14:32,282 INFO C3P0ConnectionProvider:50 - C3P0 using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/test
18:14:32,282 INFO C3P0ConnectionProvider:51 - Connection properties: {useUnicode=true, clobCharacterEncoding=utf-8, user=root, password=****, characterEncoding=utf-8, characterSetResults=utf-8}
18:14:32,283 INFO C3P0ConnectionProvider:54 - autocommit mode: false
18:14:32,895 INFO SettingsFactory:77 - RDBMS: MySQL, version: 4.1.12
18:14:32,903 INFO SettingsFactory:78 - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-3.1.12 ( $Date: 2005-11-17 15:53:48 +0100 (Thu, 17 Nov 2005) $, $Revision$ )
18:14:33,085 INFO Dialect:103 - Using dialect: org.hibernate.dialect.MySQLDialect
18:14:33,095 INFO TransactionFactoryFactory:31 - Using default transaction strategy (direct JDBC transactions)
18:14:33,105 INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
18:14:33,105 INFO SettingsFactory:125 - Automatic flush during beforeCompletion(): disabled
18:14:33,106 INFO SettingsFactory:129 - Automatic session close at end of transaction: disabled
18:14:33,106 INFO SettingsFactory:136 - JDBC batch size: 15
18:14:33,107 INFO SettingsFactory:139 - JDBC batch updates for versioned data: enabled
18:14:33,108 INFO SettingsFactory:144 - Scrollable result sets: enabled
18:14:33,108 DEBUG SettingsFactory:148 - Wrap result sets: disabled
18:14:33,109 INFO SettingsFactory:152 - JDBC3 getGeneratedKeys(): enabled
18:14:33,109 INFO SettingsFactory:160 - Connection release mode: auto
18:14:33,111 INFO SettingsFactory:184 - Maximum outer join fetch depth: 1
18:14:33,113 INFO SettingsFactory:187 - Default batch fetch size: 1
18:14:33,113 INFO SettingsFactory:191 - Generate SQL with comments: disabled
18:14:33,114 INFO SettingsFactory:195 - Order SQL updates by primary key: disabled
18:14:33,114 INFO SettingsFactory:338 - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
18:14:33,118 INFO ASTQueryTranslatorFactory:24 - Using ASTQueryTranslatorFactory
18:14:33,118 INFO SettingsFactory:203 - Query language substitutions: {}
18:14:33,119 INFO SettingsFactory:209 - Second-level cache: enabled
18:14:33,119 INFO SettingsFactory:213 - Query cache: disabled
18:14:33,120 INFO SettingsFactory:325 - Cache provider: org.hibernate.cache.HashtableCacheProvider
18:14:33,122 INFO SettingsFactory:228 - Optimize cache for minimal puts: disabled
18:14:33,124 INFO SettingsFactory:233 - Cache region prefix: hibernate.test
18:14:33,124 INFO SettingsFactory:237 - Structured second-level cache entries: disabled
18:14:33,126 DEBUG SQLExceptionConverterFactory:52 - Using dialect defined converter
18:14:33,139 INFO SettingsFactory:257 - Echoing all SQL to stdout
18:14:33,139 INFO SettingsFactory:264 - Statistics: disabled
18:14:33,140 INFO SettingsFactory:268 - Deleted entity synthetic identifier rollback: disabled
18:14:33,140 INFO SettingsFactory:283 - Default entity-mode: pojo
18:14:33,205 INFO SessionFactoryImpl:153 - building session factory
18:14:33,205 DEBUG SessionFactoryImpl:164 - Session factory constructed with filter configurations : {}
18:14:33,209 DEBUG SessionFactoryImpl:167 - instantiating session factory with properties: {java.vendor=Sun Microsystems Inc., show_sql=true, hibernate.jdbc.batch_versioned_data=true, catalina.base=/home/user/.netbeans/5.0/jakarta-tomcat-5.5.9_base, hibernate.connection.url=jdbc:mysql://localhost/test, sun.management.compiler=HotSpot Client Compiler, hibernate.connection.characterEncoding=utf-8, c3p0.min_size=2, catalina.useNaming=true, os.name=Linux, sun.boot.class.path=/usr/java/jdk1.5.0_06/jre/lib/rt.jar:/usr/java/jdk1.5.0_06/jre/lib/i18n.jar:/usr/java/jdk1.5.0_06/jre/lib/sunrsasign.jar:/usr/java/jdk1.5.0_06/jre/lib/jsse.jar:/usr/java/jdk1.5.0_06/jre/lib/jce.jar:/usr/java/jdk1.5.0_06/jre/lib/charsets.jar:/usr/java/jdk1.5.0_06/jre/classes, hibernate.current_session_context_class=thread, hibernate.c3p0.max_size=2, java.vm.specification.vendor=Sun Microsystems Inc., c3p0.max_size=2, java.runtime.version=1.5.0_06-b05, hibernate.c3p0.min_size=2, c3p0.acquire_increment=2, connection.characterSetResults=utf-8, hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider, user.name=user, shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar, tomcat.util.buf.StringCache.byte.enabled=true, connection.driver_class=com.mysql.jdbc.Driver, current_session_context_class=thread, hibernate.c3p0.timeout=5000, user.language=de, java.naming.factory.initial=org.apache.naming.java.javaURLContextFactory, sun.boot.library.path=/usr/java/jdk1.5.0_06/jre/lib/i386, dialect=org.hibernate.dialect.MySQLDialect, max_fetch_depth=1, connection.clobCharacterEncoding=utf-8, java.version=1.5.0_06, java.util.logging.manager=org.apache.juli.ClassLoaderLogManager, c3p0.validate=false, user.timezone=Europe/Berlin, sun.arch.data.model=32, java.endorsed.dirs=, sun.cpu.isalist=, sun.jnu.encoding=ISO-8859-15, file.encoding.pkg=sun.io, package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.,sun.beans., file.separator=/, java.specification.name=Java Platform API Specification, hibernate.format_sql=true, hibernate.cglib.use_reflection_optimizer=true, java.class.version=49.0, user.country=DE, connection.url=jdbc:mysql://localhost/test, java.home=/usr/java/jdk1.5.0_06/jre, java.vm.info=mixed mode, sharing, hibernate.c3p0.validate=false, os.version=2.6.12-12mdk-i686-up-4GB, connection.useUnicode=true, path.separator=:, c3p0.idle_test_period=3000, connection.password=, java.vm.version=1.5.0_06-b05, hibernate.max_fetch_depth=1, hibernate.connection.password=, java.awt.printerjob=sun.print.PSPrinterJob, sun.io.unicode.encoding=UnicodeLittle, hibernate.connection.username=root, cache.region_prefix=hibernate.test, package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper., jdbc.use_streams_for_binary=true, hibernate.cache.region_prefix=hibernate.test, java.naming.factory.url.pkgs=org.apache.naming, user.home=/home/user, hibernate.connection.characterSetResults=utf-8, java.specification.vendor=Sun Microsystems Inc., java.vendor.url=http://java.sun.com/, java.library.path=/usr/java/jdk1.5.0_06/jre/lib/i386/client:/usr/java/jdk1.5.0_06/jre/lib/i386:/usr/java/jdk1.5.0_06/jre/../lib/i386, hibernate.connection.driver_class=com.mysql.jdbc.Driver, java.vm.vendor=Sun Microsystems Inc., connection.username=root, hibernate.dialect=org.hibernate.dialect.MySQLDialect, common.loader=${catalina.home}/common/classes,${catalina.home}/common/i18n/*.jar,${catalina.home}/common/lib/*.jar, hibernate.jdbc.use_streams_for_binary=true, java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition, java.class.path=/usr/java/jdk1.5.0_06/lib/tools.jar:/opt/netbeans-5.0/enterprise2/jakarta-tomcat-5.5.9/bin/bootstrap.jar:/opt/netbeans-5.0/enterprise2/jakarta-tomcat-5.5.9/bin/commons-logging-api.jar, hibernate.connection.clobCharacterEncoding=utf-8, c3p0.timeout=5000, java.vm.specification.name=Java Virtual Machine Specification, catalina.home=/opt/netbeans-5.0/enterprise2/jakarta-tomcat-5.5.9, java.vm.specification.version=1.0, sun.os.patch.level=unknown, sun.cpu.endian=little, java.io.tmpdir=/home/user/.netbeans/5.0/jakarta-tomcat-5.5.9_base/temp, java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi, server.loader=${catalina.home}/server/classes,${catalina.home}/server/lib/*.jar, java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment, os.arch=i386, java.ext.dirs=/usr/java/jdk1.5.0_06/jre/lib/ext, hibernate.connection.useUnicode=true, user.dir=/opt/netbeans-5.0/enterprise2/jakarta-tomcat-5.5.9/bin, hibernate.c3p0.idle_test_period=3000, line.separator=
, java.vm.name=Java HotSpot(TM) Client VM, cache.provider_class=org.hibernate.cache.HashtableCacheProvider, hibernate.c3p0.acquire_increment=2, file.encoding=ISO-8859-15, format_sql=true, connection.characterEncoding=utf-8, java.specification.version=1.5, c3p0.max_statements=100, hibernate.c3p0.max_statements=100, hibernate.show_sql=true, jdbc.batch_versioned_data=true}
18:14:33,556 DEBUG AbstractEntityPersister:2447 - Static SQL for entity: events.Event
18:14:33,556 DEBUG AbstractEntityPersister:2449 - Version select: select EVENT_ID from EVENTS where EVENT_ID =?
18:14:33,557 DEBUG AbstractEntityPersister:2450 - Snapshot select: select event_.EVENT_ID, event_.EVENT_DATE as EVENT2_0_, event_.title as title0_, event_.hallo as hallo0_ from EVENTS event_ where event_.EVENT_ID=?
18:14:33,557 DEBUG AbstractEntityPersister:2452 - Insert 0: insert into EVENTS (EVENT_DATE, title, hallo, EVENT_ID) values (?, ?, ?, ?)
18:14:33,558 DEBUG AbstractEntityPersister:2453 - Update 0: update EVENTS set EVENT_DATE=?, title=?, hallo=? where EVENT_ID=?
18:14:33,558 DEBUG AbstractEntityPersister:2454 - Delete 0: delete from EVENTS where EVENT_ID=?
18:14:33,595 DEBUG EntityLoader:79 - Static select for entity events.Event: select event0_.EVENT_ID as EVENT1_0_0_, event0_.EVENT_DATE as EVENT2_0_0_, event0_.title as title0_0_, event0_.hallo as hallo0_0_ from EVENTS event0_ where event0_.EVENT_ID=?
18:14:33,596 DEBUG EntityLoader:79 - Static select for entity events.Event: select event0_.EVENT_ID as EVENT1_0_0_, event0_.EVENT_DATE as EVENT2_0_0_, event0_.title as title0_0_, event0_.hallo as hallo0_0_ from EVENTS event0_ where event0_.EVENT_ID=?
18:14:33,597 DEBUG EntityLoader:79 - Static select for entity events.Event: select event0_.EVENT_ID as EVENT1_0_0_, event0_.EVENT_DATE as EVENT2_0_0_, event0_.title as title0_0_, event0_.hallo as hallo0_0_ from EVENTS event0_ where event0_.EVENT_ID=? for update
18:14:33,598 DEBUG EntityLoader:79 - Static select for entity events.Event: select event0_.EVENT_ID as EVENT1_0_0_, event0_.EVENT_DATE as EVENT2_0_0_, event0_.title as title0_0_, event0_.hallo as hallo0_0_ from EVENTS event0_ where event0_.EVENT_ID=? for update
18:14:33,609 DEBUG EntityLoader:67 - Static select for action ACTION_MERGE on entity events.Event: select event0_.EVENT_ID as EVENT1_0_0_, event0_.EVENT_DATE as EVENT2_0_0_, event0_.title as title0_0_, event0_.hallo as hallo0_0_ from EVENTS event0_ where event0_.EVENT_ID=?
18:14:33,610 DEBUG EntityLoader:67 - Static select for action ACTION_REFRESH on entity events.Event: select event0_.EVENT_ID as EVENT1_0_0_, event0_.EVENT_DATE as EVENT2_0_0_, event0_.title as title0_0_, event0_.hallo as hallo0_0_ from EVENTS event0_ where event0_.EVENT_ID=?
18:14:33,613 DEBUG SessionFactoryObjectFactory:39 - initializing class SessionFactoryObjectFactory
18:14:33,615 DEBUG SessionFactoryObjectFactory:76 - registered: ff80808109ef73bd0109ef73bf0b0000 (unnamed)
18:14:33,616 INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configured
18:14:33,616 DEBUG SessionFactoryImpl:292 - instantiated session factory
18:14:33,621 DEBUG SessionFactoryImpl:353 - Checking 0 named HQL queries
18:14:33,621 DEBUG SessionFactoryImpl:373 - Checking 0 named SQL queries
18:14:33,690 DEBUG SessionImpl:273 - opened session at timestamp: 4678384327262208
18:14:33,755 DEBUG ThreadLocalSessionContext:290 - allowing method [beginTransaction] in non-transacted context
18:14:33,756 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [beginTransaction] to proceed to real session
18:14:33,756 DEBUG JDBCTransaction:54 - begin
18:14:33,757 DEBUG ConnectionManager:358 - opening JDBC connection
18:14:33,758 DEBUG JDBCTransaction:59 - current autocommit status: false
18:14:33,758 DEBUG JDBCContext:190 - after transaction begin
1002
1234
(?.?.?.)
2468
18:14:33,759 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [save] to proceed to real session
18:14:33,763 DEBUG DefaultSaveOrUpdateEventListener:161 - saving transient instance
18:14:33,767 DEBUG AbstractSaveEventListener:106 - generated identifier: 1002, using strategy: org.hibernate.id.Assigned
18:14:33,769 DEBUG AbstractSaveEventListener:139 - saving [events.Event#1002]
18:14:33,791 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [flush] to proceed to real session
18:14:33,792 DEBUG AbstractFlushingEventListener:58 - flushing session
18:14:33,793 DEBUG AbstractFlushingEventListener:111 - processing flush-time cascades
18:14:33,794 DEBUG AbstractFlushingEventListener:153 - dirty checking collections
18:14:33,797 DEBUG AbstractFlushingEventListener:170 - Flushing entities and processing referenced collections
18:14:33,801 DEBUG AbstractFlushingEventListener:209 - Processing unreferenced collections
18:14:33,802 DEBUG AbstractFlushingEventListener:223 - Scheduling collection removes/(re)creates/updates
18:14:33,802 DEBUG AbstractFlushingEventListener:85 - Flushed: 1 insertions, 0 updates, 0 deletions to 1 objects
18:14:33,803 DEBUG AbstractFlushingEventListener:91 - Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
18:14:33,805 DEBUG Printer:83 - listing entities:
18:14:33,806 DEBUG Printer:90 - events.Event{hallo=2468, title=1234, date=(?.?.?.), id=1002}
18:14:33,806 DEBUG AbstractFlushingEventListener:289 - executing flush
18:14:33,808 DEBUG AbstractEntityPersister:2034 - Inserting entity: [events.Event#1002]
18:14:33,809 DEBUG AbstractBatcher:311 - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
18:14:33,813 DEBUG SQL:346 -
insert
into
EVENTS
(EVENT_DATE, title, hallo, EVENT_ID)
values
(?, ?, ?, ?)
Hibernate:
insert
into
EVENTS
(EVENT_DATE, title, hallo, EVENT_ID)
values
(?, ?, ?, ?)
18:14:33,814 DEBUG AbstractBatcher:424 - preparing statement
18:14:33,839 DEBUG AbstractEntityPersister:1821 - Dehydrating entity: [events.Event#1002]
18:14:33,839 DEBUG StringType:79 - binding '(?.?.?.)' to parameter: 1
18:14:33,843 DEBUG StringType:79 - binding '1234' to parameter: 2
18:14:33,844 DEBUG IntegerType:79 - binding '2468' to parameter: 3
18:14:33,844 DEBUG IntegerType:79 - binding '1002' to parameter: 4
18:14:33,845 DEBUG AbstractBatcher:28 - Adding to batch
18:14:33,847 DEBUG AbstractBatcher:55 - Executing batch size: 1
18:14:33,848 DEBUG AbstractBatcher:319 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
18:14:33,849 DEBUG AbstractBatcher:470 - closing statement
18:14:33,850 DEBUG AbstractFlushingEventListener:316 - post flush
18:14:33,852 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [getTransaction] to proceed to real session
18:14:33,853 DEBUG JDBCTransaction:103 - commit
18:14:33,853 DEBUG SessionImpl:355 - automatically flushing session
18:14:33,854 DEBUG AbstractFlushingEventListener:58 - flushing session
18:14:33,854 DEBUG AbstractFlushingEventListener:111 - processing flush-time cascades
18:14:33,855 DEBUG AbstractFlushingEventListener:153 - dirty checking collections
18:14:33,855 DEBUG AbstractFlushingEventListener:170 - Flushing entities and processing referenced collections
18:14:33,856 DEBUG AbstractFlushingEventListener:209 - Processing unreferenced collections
18:14:33,856 DEBUG AbstractFlushingEventListener:223 - Scheduling collection removes/(re)creates/updates
18:14:33,856 DEBUG AbstractFlushingEventListener:85 - Flushed: 0 insertions, 0 updates, 0 deletions to 1 objects
18:14:33,857 DEBUG AbstractFlushingEventListener:91 - Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
18:14:33,859 DEBUG Printer:83 - listing entities:
18:14:33,860 DEBUG Printer:90 - events.Event{hallo=2468, title=1234, date=(?.?.?.), id=1002}
18:14:33,860 DEBUG AbstractFlushingEventListener:289 - executing flush
18:14:33,860 DEBUG AbstractFlushingEventListener:316 - post flush
18:14:33,861 DEBUG JDBCContext:181 - before transaction completion
18:14:33,861 DEBUG SessionImpl:411 - before transaction completion
18:14:33,862 DEBUG JDBCTransaction:116 - committed JDBC Connection
18:14:33,862 DEBUG JDBCContext:195 - after transaction completion
18:14:33,863 DEBUG ConnectionManager:341 - aggressively releasing JDBC connection
18:14:33,863 DEBUG ConnectionManager:378 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
18:14:33,868 DEBUG SessionImpl:442 - after transaction completion
18:14:33,869 DEBUG SessionImpl:371 - automatically closing session
18:14:33,869 DEBUG SessionImpl:291 - closing session


Top
 Profile  
 
 Post subject:
PostPosted: Mon Mar 13, 2006 12:02 pm 
Beginner
Beginner

Joined: Thu Apr 21, 2005 5:37 am
Posts: 45
Location: Switzerland
Könntest du uns die Mapping-Dateien zur Verfügung stellen?

Was mir am Logging auffällt:
Quote:
insert
into
EVENTS
(EVENT_DATE, title, hallo, EVENT_ID)
values
(?, ?, ?, ?)
Hibernate:
insert
into
EVENTS
(EVENT_DATE, title, hallo, EVENT_ID)
values
(?, ?, ?, ?)
18:14:33,814 DEBUG AbstractBatcher:424 - preparing statement
18:14:33,839 DEBUG AbstractEntityPersister:1821 - Dehydrating entity: [events.Event#1002]
18:14:33,839 DEBUG StringType:79 - binding '(?.?.?.)' to parameter: 1
18:14:33,843 DEBUG StringType:79 - binding '1234' to parameter: 2
18:14:33,844 DEBUG IntegerType:79 - binding '2468' to parameter: 3
18:14:33,844 DEBUG IntegerType:79 - binding '1002' to parameter: 4


Evtl. bereiten die Fragezeichen bei parameter 1 Probleme. Was bezweckst du denn mit denen?

MySQL ist bekannt dafür, dass es Daten die es nicht erkennt "kreativ" interpretiert.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Mar 13, 2006 2:25 pm 
Newbie

Joined: Sun Mar 12, 2006 12:59 pm
Posts: 6
Ok. Hier ein paar zusätzliche Informationen. :-)

Zunächst hinsichtlich der Datenbank ein kleiner phpMyAdmin-Export von Struktur und Daten:

CREATE TABLE `EVENTS` (
`EVENT_ID` bigint(20) NOT NULL default '0',
`EVENT_DATE` varchar(255) default NULL,
`title` varchar(255) default NULL,
`hallo` int(11) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `EVENTS` VALUES (0, '2006-03-12', 'Ελληνική Ομάδα Διάσωσης (Ε.Ο.Δ.)', 369);
INSERT INTO `EVENTS` VALUES (184550144, '', '', 50396416);

Die Mapping-Datei sieht wie folgt aus:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

<class name="events.Event" table="EVENTS">
<id name="id" type="integer" column="EVENT_ID">
<!-- <generator class="native"/> -->
</id>
<property name="date" type="string" column="EVENT_DATE"/>
<property name="title" type="string"/>
<property name="hallo" type="integer"/>
</class>

</hibernate-mapping>

Und hier folgt noch die Java-Klasse:

package events;

import java.util.Date;

public class Event {
private int id;

private String title;
private String date;
private int hallo;

public Event() {}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getDate() {
return date;
}

public void setDate(String date) {
this.date = date;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public int getHallo() {
return hallo;
}

public void setHallo(int hallo) {
this.hallo = hallo;
}
}

Nun noch zu Deiner Frage zu den Fragezeichen beim ersten Parameter des Prepared Statements:

Diese Fragezeichen in dem Wert habe ich mir nicht ausgedacht, sondern quasi gesehen NetBeans. :-) Dort, wo die Fragezeichen stehen, werden in der JSP-Seite in Wirklichkeit griechische Buchstaben übergeben, die aber beim stdout im NetBeans nur als Fragezeichen dargestellt werden. Einfach nur ein Zeichensatzproblem bei der Ausgabe, denke ich.

Aber selbst, wenn sich irgendwas an diesem Parameter verschlucken würde, warum sind sämtliche Werte des Datensatzes in der Datenbanktabelle Murks? Da kommt kein einziger Wert richtig an. Aussehen sollte es ähnlich wie oben im ersten INSERT. Das zweite INSERT zeigt, was ich mit Hibernate in der Tabelle erhalte. :-)


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 15, 2006 4:24 am 
Beginner
Beginner

Joined: Thu Apr 21, 2005 5:37 am
Posts: 45
Location: Switzerland
Hmm ich komm jetz trotzdem nochmals mit den '?'. Hier steht
Code:
18:14:33,839 DEBUG StringType:79 - binding '(?.?.?.)' to parameter: 1
18:14:33,843 DEBUG StringType:79 - binding '1234' to parameter: 2

Wieso sollte das Datum so an die DB übergeben werden? Da ist doch was faul? Versuch mal ein Debugging und schau, welchen Wert das Date hat.

Kannst du mal den Code posten, wo die Query generiert wird: Code between sessionFactory.openSession() and session.close():


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 15, 2006 4:53 am 
Newbie

Joined: Sun Mar 12, 2006 12:59 pm
Posts: 6
Die Sache mit dem Wert "(?.?.?.)" ist schon in Ordnung. Da ich Probleme mit dem INSERT hatte, habe ich ein Bißchen herumgebastelt, um mögliche Fehlerquellen, wie das Datumsformat auszuschalten. So gibt es also jetzt in der Datenbank, in der Mapping-Klasse und in der Java-Klasse nur noch Felder der Typen String und Integer. Und in die String-Felder habe ich dann einfach irgendwas beim Testen reingeschrieben. Es kommt also nicht unbedingt inhaltlich in das Feld, was der Feldname besagt. :-) Die Datentypen stimmen aber. Du kannst es ja vorsichthalber in meinem letzten Posting kontrollieren, aber da sollte alles stimmen. Wenn das Mapping falsch wäre, würde nach meiner Meinung auch eine Exception geworfen und der INSERT-Befehl nicht ausgeführt.

Ich kann aber gerne noch den letzten Teil des Codes vorzeigen. :-) Dann ist aber alles lückenlos. :-)

In der JSP-Seite steht folgende Zeile:

EventManager.createAndStoreEvent("1234", "(Ε.Ο.Δ.)", 2468);

Die Klasse EventManager sieht wie folgt aus (und greift auf die Event-Klasse zu, die ich bereits letztes Mal gepostet hatte):

package events;
import org.hibernate.Session;

import java.util.Date;
import java.util.List;

import util.HibernateUtil;

public class EventManager {

private void EventManager() {

}

public static void createAndStoreEvent(String title, String theDate, int hallo) {

Session session = HibernateUtil.getSessionFactory().getCurrentSession();

session.beginTransaction();

Event theEvent = new Event();
theEvent.setId(1002);
System.out.println(theEvent.getId());
theEvent.setTitle(title);
System.out.println(theEvent.getTitle());
theEvent.setDate(theDate);
System.out.println(theEvent.getDate());
theEvent.setHallo(hallo);
System.out.println(theEvent.getHallo());

session.save(theEvent);
session.flush();

session.getTransaction().commit();
}

public static List listEvents() {

Session session = HibernateUtil.getSessionFactory().getCurrentSession();

session.beginTransaction();
List result = null;

result = session.createQuery("from Event").list();

session.getTransaction().commit();

return result;
}

}

Diese System.out-Befehle unmittelbar vor dem session.save() ergeben auch die richtigen Ausgaben (abgesehen von den "?" anstatt der griechischen Zeichen), wie in meinem ersten Posting zu sehen ist:

18:14:33,758 DEBUG JDBCContext:190 - after transaction begin
1002
1234
(?.?.?.)
2468

Also, habe ich eigentlich nur versucht, das EVENTS-Beispiel aus dem Hibernate-Tutorial mit MySQL ans Laufen zu bringen. Nachdem Probleme aufgetreten sind, habe ich zu Testzwecken hier und da etwas verändert, um mögliche Fehlerquellen auszuschalten. ;-) Nachdem ich alle mir einfallenden Fehlerquellen ausgeschlossen habe, klappt es leider aber immer noch nicht.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 15, 2006 6:42 am 
Beginner
Beginner

Joined: Thu Apr 21, 2005 5:37 am
Posts: 45
Location: Switzerland
dann wirds wohl doch an den Zeichensätzen liegen. Ich weiss allerdings nicht, ob das Problem bei Hibernate oder bei JDBC-Treiber oder bei MySQL liegt. Bei MySQL aber eher weniger, da du das Zeug ja direkt einfügen kannst.

Wie sieht denn die hibernate.cfg aus? Dort gibts auch einige Einstellungen für MySQL betreffend Unicode etc.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 15, 2006 6:46 am 
Newbie

Joined: Sun Mar 12, 2006 12:59 pm
Posts: 6
Am JDBC-Treiber kann es eigentlich auch nicht liegen, denn den benutze ich ja auch, wenn ich direkt mit JDBC die Daten in die Datenbankschreibe. Ich komme also immer wieder zu dem Schluß, daß es irgendwie an Hibernate liegen muß.

Merkwürdig finde ich, Zeichensatz hin oder her, daß er auch die INTEGER-Felder beim Einfügen zerhaut. Wie erklärt sich das?

Ich habe alle Zeichensatzvariablen gesetzt, die mir über den Weg gelaufen sind. Welche könnte ich übersehen haben? Leider schweigt sich die Hibernate-Website nahezu komplett zum Thema Zeichensätzen aus. :-(


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 15, 2006 7:25 am 
Newbie

Joined: Sun Mar 12, 2006 12:59 pm
Posts: 6
Ich habe gerade noch mal recherchiert... Eventuell bin ich zufällig an ganz anderer Stelle auf einen möglichen Lösungsansatz getroffen. Ich zitiere aus der Seite http://www.hibernate.org/80.html:


MySQL
License: Open Source
URL: http://www.mysql.com/
Issues: No subselects in "current" versions (subselect support is currently in beta).
No transactions with MyISAM tables, only with InnoDB tables (consider changing the default for your databases). The Caucho JDBC driver does not work.

Ich habe den interessanten Teil fett rot markiert. MySQL wird unterstützt. Ja, aber... ;-) Und ich verwende MyISAM-Tabellen und das EVENTS-Beispiel aus dem Tutorial arbeitet mit einer Transaktion:

Session session = HibernateUtil.getSessionFactory().getCurrentSession();

session.beginTransaction();
[...]
session.save(theEvent);
session.flush();

session.getTransaction().commit();


Leider habe ich diese Seite, aus der ich hier zitiere, gerade erst durch Zufall über Google gefunden. Die ist irgendwie total versteckt. Ich bin immer nur auf die entsprechende Seite zu NHibernate gestoßen und da gibt es diesen Hinweis nicht... :-)

Ich habe gerade mal den Tabellentyp von MyISAM auf InnoDB umgestellt. Leider ohne Erfolg. :-( Heute Abend werde ich einmal in Ruhe prüfen, ob es funktioniert, wenn ich ohne Transaktion arbeite... Aber eigentlich sollten Transaktionen ja im InnoDB gehen.

Das Ganze bleibt also merkwürdig.

Was ich auch noch mal testen wollte, ist die Frage, ob derselbe Code mit eines Postgres-Datenbank funktioniert... ;-)


Top
 Profile  
 
 Post subject: LÖSUNG
PostPosted: Wed Mar 15, 2006 5:27 pm 
Newbie

Joined: Sun Mar 12, 2006 12:59 pm
Posts: 6
JUHU! :-))) Ich habe die Lösung gefunden. Google ist doch einfach unerschöpflich. Man kann tagelang googeln und findet doch noch was... ;-)

Folgende Seite beschreibt exakt mein Problem und enthält die passende Lösung:
http://bugs.mysql.com/bug.php?id=14910
Es liegt wohl an dem MySQL-Server-RPM von Mandriva 2006, welches ich ja auch verwende... ;-) Hammerhart. *sprachlos*

Ich habe in der hibernate.cfg.xml jetzt einfach folgenden Eintrag hinzugefügt:
<property name="connection.useServerPrepStmts">false</property>
Damit funktionieren die INSERTS nun problemlos.

Spannender Fakt nebenbei: Die INSERTS klappen auch in der Kombination MyISAM plus Transaktionen. Das geht ja laut Hibernate-Website nicht. Bei mir aber schon. :-)[/b]


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 9 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.