2015-02-06 5 views
0

Вот мой первый проект гибернации:Первый Hibernate проект с аннотацией

enter image description here

hibernate.cfg:

<?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:33606/myHibernateDatabase</property> 
    <property name="connection.username">root</property> 
    <property name="connection.password">2323</property> 
    <property name="connection.pool_size">1</property> 
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 
    <property name="show_sql">true</property> 
    <property name="hbm2ddl.auto">create</property> 
    <mapping class="sajjad.htlo.Student_Info"/> 
</session-factory> 
</hibernate-configuration> 

Это моя модель класса:

@Entity 
@Table(name="Student_Information") 
public class Student_Info { 

private String name; 
@Id 
private int id; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public int getId() { 
    return id; 
} 

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

И это MainApp класс для запуска:

public class MainApp { 
public static void main(String[] args) { 
    Student_Info student = new Student_Info(); 
    student.setId(10); 
    student.setName("sajjad"); 

    SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); 
    Session session = sessionFactory.openSession(); 
    session.beginTransaction(); 
    session.save(student); 
    session.getTransaction().commit(); 

    session.close(); 
    sessionFactory.close(); 
    } 
} 

Но я получил это исключение во время выполнения:

org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> 
    INFO: HCANN000001: Hibernate Commons Annotations {4.0.4.Final} 
    Feb 06, 2015 9:43:58 PM org.hibernate.Version logVersion 
    INFO: HHH000412: Hibernate Core {4.3.1.Final} 
    Feb 06, 2015 9:43:58 PM org.hibernate.cfg.Environment <clinit> 
    INFO: HHH000206: hibernate.properties not found 
    Feb 06, 2015 9:43:58 PM org.hibernate.cfg.Environment buildBytecodeProvider 
    INFO: HHH000021: Bytecode provider name : javassist 
    Feb 06, 2015 9:43:58 PM org.hibernate.cfg.Configuration configure 
    INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml 
    Feb 06, 2015 9:43:58 PM org.hibernate.cfg.Configuration getConfigurationInputStream 
    INFO: HHH000040: Configuration resource: /hibernate.cfg.xml 
    Feb 06, 2015 9:43:58 PM org.hibernate.internal.util.xml.DTDEntityResolver resolveEntity 
    WARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide! 
    Feb 06, 2015 9:43:58 PM org.hibernate.cfg.Configuration doConfigure 
    INFO: HHH000041: Configured SessionFactory: null 
    Feb 06, 2015 9:43:58 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
    WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!) 
    Feb 06, 2015 9:43:58 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
    INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:33606/myHibernateDatabase] 
    Feb 06, 2015 9:43:58 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
    INFO: HHH000046: Connection properties: {user=root, password=****} 
    Feb 06, 2015 9:43:58 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
    INFO: HHH000006: Autocommit mode: false 
    Feb 06, 2015 9:43:58 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
    INFO: HHH000115: Hibernate connection pool size: 1 (min=1) 
    Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect 
     at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:132) 
     at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.java:118) 
     at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:140) 
     at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:58) 
     at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:75) 
     at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106) 
     at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89) 
     at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206) 
     at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178) 
     at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260) 
     at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94) 
     at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89) 
     at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206) 
     at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178) 
     at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885) 
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843) 
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928) 
     at sajjad.htlo.MainApp.main(MainApp.java:15) 
    Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:408) 
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
     at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117) 
     at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:355) 
     at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2461) 
     at 

com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317) 
    at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:55) 
    ... 14 more 
Caused by: java.net.ConnectException: Connection refused: connect 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at java.net.Socket.connect(Socket.java:538) 
    at java.net.Socket.<init>(Socket.java:434) 
    at java.net.Socket.<init>(Socket.java:244) 
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:259) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:305) 
    ... 27 more 

я установил MySQL и его имя пользователя является root и пароль 2323

Что не так?

ответ

0

Кажется опечатка мне, ваша Mysql прослушивает порт 33606

"jdbc:mysql://localhost:33606" 

Оно должно быть (по умолчанию, если вы не меняли) 3306, пожалуйста, проверьте.

Это может быть причиной вашего становятся

Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect 
+0

я исправить это, но теперь исключение говорит 'неизвестной myhibernatedatabase' базы данных –

+0

Почему Hibernate автоматически не создается? так как я добавил '' hbm2ddl.auto "> create' в xml-файл –

+0

, тогда« myhibernatedatabase »не должна быть вашей базой данных, попробуйте подключить выше с помощью инструмента, такого как SqlYog или рабочий стол mysql – RE350

0

Ваша фактическая ошибка Ошибка связи: последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад. Драйвер не получил никаких пакетов с сервера. , пожалуйста, проверьте приведенную ниже ссылку, может вам помочь.

Solving a "communications link failure" with JDBC and MySQL

0

Если вы получаете org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect или Communications link failure то это означает, что вы не можете подключиться к БД. Это может быть из-за того, что вы не можете использовать правильный драйвер или ваша база данных недоступна. Вот несколько шагов, которые можно использовать для определения проблемы. Вы можете обратиться к this post для подробного объяснения.

  1. IP-адрес или имя хоста в JDBC URL неправильно.
  2. Имя хоста в URL-адресе JDBC не распознается локальным DNS-сервером.
  3. Номер порта отсутствует или не указан в URL-адрес JDBC.
  4. Сервер DB не работает.
  5. Сервер DB не принимает соединения TCP/IP.
  6. У сервера DB закончились соединения.
  7. Что-то между Java и DB блокирует соединения, например. брандмауэр или прокси.

Чтобы решить один или другой, выполните следующие рекомендации:

  1. Проверка и проверить их с ping.
  2. Обновите DNS или используйте IP-адрес в URL-адрес JDBC.
  3. Проверьте его на основе my.cnf базы данных MySQL.
  4. Запустите БД.
  5. Убедитесь, что mysqld запущен без --skip-networking option.
  6. Перезагрузите базу данных и исправьте свой код соответственно, чтобы он закрывал соединения в finally.
  7. Отключите брандмауэр и/или настройте брандмауэр/прокси для разрешения/пересылки порта.

Смежные вопросы