2016-09-01 2 views
0

私は明確な実例と良いガイドを見つけるのが難しいと思っているので、これらの技術に精通するために一歩一歩試しています。hibernate 5.2.2(entity annotation)+ mysql、eclipseの最初の例

私は、正しくを、プログラムを実行するために私のできないことを明確にする必要があり、可能な解決策は、このようなコードを実行できるようにする:

1)私のディレクトリとライブラリのプリントアウト: eclipse project

2)これは、SRC/hibernate.cfg.xmlののコードである:これは、Src/PK/Student.javaのコードである)

<hibernate-configuration> 
<session-factory> 
<property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="connection.url">jdbc:mysql://localhost:3306/prva?useSSL=false</property> 
<property name="connection.username">root</property> 
<property name="connection.password">root</property> 

<property name="connection.pool_size">1</property> 
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
<property name="current_session_context_class">thread</property> 

<!-- note: rimbalza Echo SQLquery su stdoout --> 
<property name="show_sql">true</property> 


</session-factory> 
</hibernate-configuration> 

3: (永続クラス)

package pk; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name="student") 
public class Student { 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    @Column(name="id") 
    private int id; 

    @Column(name="first_name") 
    private String firstName; 

    @Column(name="last_name") 
    private String lastName; 

    @Column(name="email") 
    private String email; 

    public Student() { 

    } 

    public Student(String firstName, String lastName, String email) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.email = email; 
    } 

    public int getId() { 
     return id; 
    } 

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

    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    @Override 
    public String toString() { 
     return "Student [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email + "]"; 
    } 

} 

4)これは、Src/PK/Play.javaのコードである: (メイン及び学生の使用)

package pk; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 

public class Play { 

    public static void main(String[] args) { 
     SessionFactory factory = new Configuration() 
             .configure() 
             .addAnnotatedClass(Student.class) 
             .buildSessionFactory(); 

     Session session=factory.getCurrentSession(); 

     try{ 
      Student tempStudent = new Student("Carl","Dred","[email protected]"); 
      session.beginTransaction(); 
      session.save(tempStudent); 
      session.getTransaction().commit(); 
      tempStudent.toString(); 
     }finally{ 
      factory.close(); 
     } 
    } 
} 

5)、これはのメッセージでありますコンソール:

Sep 01, 2016 3:32:02 PM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {5.2.2.Final} 
Sep 01, 2016 3:32:03 PM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000206: hibernate.properties not found 
Sep 01, 2016 3:32:03 PM org.hibernate.cfg.Environment buildBytecodeProvider 
INFO: HHH000021: Bytecode provider name : javassist 
Sep 01, 2016 3:32:03 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> 
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 
Sep 01, 2016 3:32:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) 
Sep 01, 2016 3:32:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/prva?useSSL=false] 
Sep 01, 2016 3:32:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001001: Connection properties: {user=root, password=****} 
Sep 01, 2016 3:32:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001003: Autocommit mode: false 
Sep 01, 2016 3:32:03 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init> 
INFO: HHH000115: Hibernate connection pool size: 1 (min=1) 
Sep 01, 2016 3:32:04 PM org.hibernate.dialect.Dialect <init> 
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect 
Hibernate: insert into student (email, first_name, last_name, id) values (?, ?, ?, ?) 
Sep 01, 2016 3:32:06 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions 
WARN: SQL Error: 1146, SQLState: 42S02 
Sep 01, 2016 3:32:06 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions 
ERROR: Table 'prva.student' doesn't exist 
Sep 01, 2016 3:32:06 PM org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl release 
INFO: HHH000010: On release of batch it still contained JDBC statements 
Sep 01, 2016 3:32:06 PM org.hibernate.internal.ExceptionMapperStandardImpl mapManagedFlushFailure 
ERROR: HHH000346: Error during managed flush [org.hibernate.exception.SQLGrammarException: could not execute statement] 
Sep 01, 2016 3:32:06 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop 
INFO: HHH10001008: Cleaning up connection pool [jdbc:mysql://localhost:3306/prva?useSSL=false] 
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement 
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:147) 
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:155) 
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:162) 
    at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1411) 
    at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:475) 
    at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3168) 
    at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2382) 
    at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:467) 
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:146) 
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(JdbcResourceLocalTransactionCoordinatorImpl.java:38) 
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:220) 
    at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:68) 
    at pk.Play.main(Play.java:27) 
Caused by: org.hibernate.exception.SQLGrammarException: could not execute statement 
    at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63) 
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97) 
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:207) 
    at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:45) 
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2934) 
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3434) 
    at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:89) 
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:582) 
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:456) 
    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337) 
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39) 
    at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1405) 
    ... 9 more 
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'prva.student' 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:404) 
    at com.mysql.jdbc.Util.getInstance(Util.java:387) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:942) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3966) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3902) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2526) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2673) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2549) 
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861) 
    at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073) 
    at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009) 
    at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5098) 
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994) 
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204) 
    ... 18 more 

答えて

2

あなたは、データベース内のテーブルを作成していないように思えるが存在しません。

+0

はい私はこのテーブルを作成していません!私はコードを試しますが、コンソールは私にこれを与えます: 2013年9月1日4:50:39 PM org.hibernate.cfg.Environment INFO:HHH000206:hibernate.propertiesが見つかりません Sep 01、2016 4:50: 39 PM org.hibernate.cfg.Environment buildBytecodeProvider ...(私はカットしなければならないので、大きなリプレイはできません) – Francesco

+0

http://docs.jboss.org/hibernate/orm/ 5.1/userguide/html_single/Hibernate_User_Guide.html#configurations-hbmddl '' hibernate.hbm2ddl.auto''オプションの別の値を表示します –

0

私はあなたのコンソールを見ましたが、 "student"という表は存在しません。 ERROR:テーブル「prva.studentは」 は、ファイルをがhibernate.cfg.xmlする<property name="hbm2ddl.auto" value="create"/>を追加...

+0

これはコメントであるべきであり、実際には解決策を提供していません。 –

+0

申し訳ありませんが、ソリューションを提供する必要がありますが、すでに解決策が与えられていることがわかりました –

+0

テーブルとさまざまな列を作成すると、DB内のさまざまなエンティティが休止状態から動的に生成される? – Francesco

関連する問題