Новичок
Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.1.2008
Репутация: нет Всего: нет
|
У меня возникла странная ошибка, когда все пишеш правильно(  ), а оно не работает ( :( ). Опишу всё подбробно. hibernate.cfg.xmlКод | <?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">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernatetest</property> <property name="connection.username">reset</property> <property name="connection.password">12345</property> <property name="connection.pool_size">1</property> <property name= "cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property> <property name="current_session_context_class">thread</property> <!-- this will show us all sql statements --> <property name="hibernate.show_sql">true</property> <property name="hbm2ddl.auto">none</property> <!-- <property name="hbm2ddl.auto">update</property> --> </session-factory> </hibernate-configuration>
|
HibernateUtil.javaКод |
public class HibernateUtil { private static SessionFactory sessionFactory; static { try { sessionFactory = new AnnotationConfiguration() .addAnnotatedClass(org.media.Video.class) .addAnnotatedClass(org.media.Actor.class) .addAnnotatedClass(org.media.Cast.class).configure().buildSessionFactory(); } catch (Throwable ex) { // Log exception! throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSession() throws HibernateException { return sessionFactory; } }
|
Video.javaКод |
@Entity @Table(name="video") public class Video { @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.AUTO) // @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
@Column (name="description") private String description;
public String getDescription() { return description; }
public Long getId() { return id; } public void setDescription(String description) { this.description = description; } public void setId(Long id) { this.id = id; } }
|
HibernateTest.javaКод | public class HibernateTest { public static void test(){ Video video = new Video(); video.setDescription("testDescr"); Actor actor = new Actor(); actor.setName("testName"); Cast cast = new Cast(); //cast.setVideo(video); //cast.setActor(actor); HibernateUtil hu = new HibernateUtil(); Session session = hu.getSession().openSession(); Transaction t = session.beginTransaction(); session.beginTransaction();
session.saveOrUpdate(video); session.saveOrUpdate(actor); session.saveOrUpdate(cast); t.commit(); session.close(); } public static void main(String args[]){ test(); } }
|
Ну и наконец лог этого чуда  Код |
17:54:53,156 INFO Version:15 - Hibernate Annotations 3.3.0.GA 17:54:53,216 INFO Environment:514 - Hibernate 3.2.5 17:54:53,216 INFO Environment:547 - hibernate.properties not found 17:54:53,246 INFO Environment:681 - Bytecode provider name : cglib 17:54:53,266 INFO Environment:598 - using JDK 1.4 java.sql.Timestamp handling 17:54:53,457 INFO Configuration:1426 - configuring from resource: /hibernate.cfg.xml 17:54:53,457 INFO Configuration:1403 - Configuration resource: /hibernate.cfg.xml 17:54:53,957 INFO Configuration:1541 - Configured SessionFactory: null 17:54:54,118 INFO AnnotationBinder:398 - Binding entity from annotated class: org.media.Video 17:54:54,198 INFO EntityBinder:420 - Bind entity org.media.Video on table video 17:54:54,318 INFO AnnotationBinder:398 - Binding entity from annotated class: org.media.Actor 17:54:54,318 INFO EntityBinder:420 - Bind entity org.media.Actor on table actor 17:54:54,328 INFO AnnotationBinder:398 - Binding entity from annotated class: org.media.Cast 17:54:54,328 INFO EntityBinder:420 - Bind entity org.media.Cast on table cast 17:54:54,338 INFO AnnotationConfiguration:350 - Hibernate Validator not found: ignoring 17:54:54,488 INFO DriverManagerConnectionProvider:41 - Using Hibernate built-in connection pool (not for production use!) 17:54:54,488 INFO DriverManagerConnectionProvider:42 - Hibernate connection pool size: 1 17:54:54,488 INFO DriverManagerConnectionProvider:45 - autocommit mode: false 17:54:54,498 INFO DriverManagerConnectionProvider:80 - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/hibernatetest 17:54:54,508 INFO DriverManagerConnectionProvider:86 - connection properties: {user=reset, password=****} 17:54:55,199 INFO SettingsFactory:89 - RDBMS: MySQL, version: 5.1.20-beta 17:54:55,199 INFO SettingsFactory:90 - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.5 ( Revision: ${svn.Revision} ) 17:54:55,229 INFO Dialect:152 - Using dialect: org.hibernate.dialect.MySQLDialect 17:54:55,229 INFO TransactionFactoryFactory:34 - Transaction strategy: org.hibernate.transaction.JDBCTransactionFactory 17:54:55,239 INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) 17:54:55,239 INFO SettingsFactory:143 - Automatic flush during beforeCompletion(): disabled 17:54:55,239 INFO SettingsFactory:147 - Automatic session close at end of transaction: disabled 17:54:55,239 INFO SettingsFactory:154 - JDBC batch size: 15 17:54:55,239 INFO SettingsFactory:157 - JDBC batch updates for versioned data: disabled 17:54:55,239 INFO SettingsFactory:162 - Scrollable result sets: enabled 17:54:55,239 INFO SettingsFactory:170 - JDBC3 getGeneratedKeys(): enabled 17:54:55,239 INFO SettingsFactory:178 - Connection release mode: auto 17:54:55,239 INFO SettingsFactory:202 - Maximum outer join fetch depth: 2 17:54:55,239 INFO SettingsFactory:205 - Default batch fetch size: 1 17:54:55,239 INFO SettingsFactory:209 - Generate SQL with comments: disabled 17:54:55,239 INFO SettingsFactory:213 - Order SQL updates by primary key: disabled 17:54:55,239 INFO SettingsFactory:217 - Order SQL inserts for batching: disabled 17:54:55,239 INFO SettingsFactory:386 - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory 17:54:55,249 INFO ASTQueryTranslatorFactory:24 - Using ASTQueryTranslatorFactory 17:54:55,249 INFO SettingsFactory:225 - Query language substitutions: {} 17:54:55,249 INFO SettingsFactory:230 - JPA-QL strict compliance: disabled 17:54:55,249 INFO SettingsFactory:235 - Second-level cache: enabled 17:54:55,249 INFO SettingsFactory:239 - Query cache: disabled 17:54:55,249 INFO SettingsFactory:373 - Cache provider: org.hibernate.cache.NoCacheProvider 17:54:55,249 INFO SettingsFactory:254 - Optimize cache for minimal puts: disabled 17:54:55,249 INFO SettingsFactory:263 - Structured second-level cache entries: disabled 17:54:55,259 INFO SettingsFactory:283 - Echoing all SQL to stdout 17:54:55,259 INFO SettingsFactory:290 - Statistics: disabled 17:54:55,259 INFO SettingsFactory:294 - Deleted entity synthetic identifier rollback: disabled 17:54:55,269 INFO SettingsFactory:309 - Default entity-mode: pojo 17:54:55,269 INFO SettingsFactory:313 - Named query checking : enabled 17:54:55,390 INFO SessionFactoryImpl:161 - building session factory 17:54:55,900 INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configured 17:54:55,990 DEBUG SQL:401 - insert into video (description) values (?) Hibernate: insert into video (description) values (?) 17:54:56,081 WARN JDBCExceptionReporter:77 - SQL Error: 1146, SQLState: 42S02 17:54:56,081 ERROR JDBCExceptionReporter:78 - Table 'hibernatetest.video' doesn't exist Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not insert: [org.media.Video] at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:40) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495) at org.media.HibernateTest.test(HibernateTest.java:24) at org.media.HibernateTest.main(HibernateTest.java:34) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'hibernatetest.video' doesn't exist at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.Util.getInstance(Util.java:381) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1031) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2543) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1737) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2022) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1940) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1925) at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33) ... 16 more
|
И варианты с ошибками 1) При такой конфигурации оно всё падает и нет никаких таблиц в БД 2) Когда <property name="hbm2ddl.auto">update</property> тогда создаются таблицы(video с даными, остальные две пустые) и вылетает с ошибкой
Код | 18:05:22,541 INFO SchemaUpdate:115 - Running hbm2ddl schema update 18:05:22,541 INFO SchemaUpdate:126 - fetching database metadata 18:05:22,541 INFO SchemaUpdate:138 - updating schema 18:05:22,541 INFO AnnotationConfiguration:350 - Hibernate Validator not found: ignoring 18:05:22,551 INFO DatabaseMetadata:96 - table not found: actor 18:05:22,551 INFO DatabaseMetadata:96 - table not found: cast 18:05:22,551 INFO DatabaseMetadata:96 - table not found: video 18:05:22,551 INFO DatabaseMetadata:96 - table not found: actor 18:05:22,551 INFO DatabaseMetadata:96 - table not found: cast 18:05:22,561 INFO DatabaseMetadata:96 - table not found: video 18:05:22,571 INFO SchemaUpdate:160 - schema update complete 18:05:22,712 DEBUG SQL:401 - insert into video (description) values (?) Hibernate: insert into video (description) values (?) 18:05:26,717 ERROR AssertionFailure:27 - an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session) java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.hibernate.util.GetGeneratedKeysHelper.getGeneratedKey(GetGeneratedKeysHelper.java:69) at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:74) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495) at org.media.HibernateTest.test(HibernateTest.java:24) at org.media.HibernateTest.main(HibernateTest.java:34) Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.util.Arrays.copyOf(Unknown Source) at java.util.ArrayList.ensureCapacity(Unknown Source) at java.util.ArrayList.add(Unknown Source) at com.mysql.jdbc.StatementImpl.getGeneratedKeysInternal(StatementImpl.java:1817) at com.mysql.jdbc.StatementImpl.getGeneratedKeys(StatementImpl.java:1773) ... 23 more Exception in thread "main" org.hibernate.AssertionFailure: InvocationTargetException extracting generated keys (JDBC3) at org.hibernate.util.GetGeneratedKeysHelper.getGeneratedKey(GetGeneratedKeysHelper.java:79) at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:74) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495) at org.media.HibernateTest.test(HibernateTest.java:24) at org.media.HibernateTest.main(HibernateTest.java:34) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.hibernate.util.GetGeneratedKeysHelper.getGeneratedKey(GetGeneratedKeysHelper.java:69) ... 18 more Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.util.Arrays.copyOf(Unknown Source) at java.util.ArrayList.ensureCapacity(Unknown Source) at java.util.ArrayList.add(Unknown Source) at com.mysql.jdbc.StatementImpl.getGeneratedKeysInternal(StatementImpl.java:1817) at com.mysql.jdbc.StatementImpl.getGeneratedKeys(StatementImpl.java:1773) ... 23 more
|
Может кто то сталкивался с этим. Заранее спасибо! Это сообщение отредактировал(а) resetdel - 9.1.2008, 19:14
|