2016-09-07 46 views
0

我正在執行由系統: Eclipse的霓虹燈4.6 +行家(integreted)+休眠5.2.2 + MySQL的(ⅰ使用MySQL工作臺6.3)冬眠5.2.2:多對一第一示例

算法: 我試圖創建基於Eclipse這個Java應用程序: 學生的實體和地址實體(可以使用的一些地址許多學生)

信息: 我只創建htmanytoone在MySQL模式,我想冬眠它在照顧實體的創建和管理的。 我希望不出現連續性的問題(我修改了代碼幾次)

我的項目上日食: Package Explorer

Student.java:

package withMaven.hibernateMaven1; 

import javax.persistence.CascadeType; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.ManyToOne; 
import javax.persistence.Table; 

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

    private long studentId; 
    private String studentName; 
    private Address studentAddress; 

    public Student() { 
    } 

    public Student(String studentName, Address studentAddress) { 
     this.studentName = studentName; 
     this.studentAddress = studentAddress; 
    } 

    @Id 
    @GeneratedValue 
    @Column(name = "student_id") 
    public long getStudentId() { 
     return this.studentId; 
    } 

    public void setStudentId(long studentId) { 
     this.studentId = studentId; 
    } 

    @Column(name = "student_name")//, nullable = false, length = 100) 
    public String getStudentName() { 
     return this.studentName; 
    } 

    public void setStudentName(String studentName) { 
     this.studentName = studentName; 
    } 

    @ManyToOne(cascade = CascadeType.ALL) 
    public Address getStudentAddress() { 
     return this.studentAddress; 
    } 

    public void setStudentAddress(Address studentAddress) { 
     this.studentAddress = studentAddress; 
    } 

} 

Address.java:

package withMaven.hibernateMaven1; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name = "address") 
public class Address { 
    private long addressId; 
    private String street; 
    private String city; 
    private String state; 
    private String zipcode; 

    public Address() { 
    } 

    public Address(String street, String city, String state, String zipcode) { 
     this.street = street; 
     this.city = city; 
     this.state = state; 
     this.zipcode = zipcode; 
    } 

    @Id 
    @GeneratedValue 
    @Column(name = "adderess_id") 
    public long getAddressId() { 
     return this.addressId; 
    } 

    public void setAddressId(long addressId) { 
     this.addressId = addressId; 
    } 

    //@Column(name = "address_street", nullable = false, length=250) 
    @Column(name = "address_street") 
    public String getStreet() { 
     return this.street; 
    } 

    public void setStreet(String street) { 
     this.street = street; 
    } 

    //@Column(name = "address_city", nullable = false, length=50) 
    @Column(name = "address_city") 
    public String getCity() { 
     return this.city; 
    } 

    public void setCity(String city) { 
     this.city = city; 
    } 

    //@Column(name = "address_state", nullable = false, length=50) 
    @Column(name = "address_state") 
    public String getState() { 
     return this.state; 
    } 

    public void setState(String state) { 
     this.state = state; 
    } 

    @Column(name = "address_zipcode")//, nullable = false, length=10) 
    public String getZipcode() { 
     return this.zipcode; 
    } 

    public void setZipcode(String zipcode) { 
     this.zipcode = zipcode; 
    } 
} 

play.java :(測試主體)

package withMaven.hibernateMaven1; 

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

public class play { 

    public static void main(String[] args) { 

     SessionFactory factory = new Configuration().configure().buildSessionFactory(); 
     Session session=factory.getCurrentSession(); 
     Transaction transaction = null; 
     try { 
      transaction = session.beginTransaction(); 
      Address address = new Address("OMR Road", "Chennai", "TN", "600097"); 
      Student student1 = new Student("Eswar", address); 
      Student student2 = new Student("Joe", address); 
      session.save(student1); 
      session.save(student2); 
      transaction.commit(); 
     } catch (HibernateException e) { 
      transaction.rollback(); 
      e.printStackTrace(); 
     } finally { 
      session.close(); 
     } 
    } 
} 

hibernate.cfx.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="hibernate.connection.driver_class"> org.hsqldb.jdbcDriver</property> 
     <property name="hibernate.connection.url"> jdbc:hsqldb:hsql://3306/htmanytoone?useSSL=false</property> 
     <property name="hibernate.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="show_sql">true</property> 
     <property name="hbm2ddl.auto">create</property> 
     <mapping class="Student" /> 
     <mapping class="Address" /> 
    </session-factory> 
</hibernate-configuration> 

pom.xml中:(我用maven,因爲它建議,但我與它沒有經驗)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>withMaven</groupId> 
    <artifactId>prova1</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>proviamo maven</name> 
    <description>primo utilizzo con maven</description> 
    <dependencies> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>5.2.2.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.31</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hsqldb</groupId> 
      <artifactId>hsqldb</artifactId> 
      <version>2.3.2</version> 
      <scope>test</scope> 
     </dependency> 

    </dependencies> 
</project> 

現在控制檯當我運行play.java:

Sep 07, 2016 10:12:09 AM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {5.2.2.Final} 
Sep 07, 2016 10:12:09 AM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000206: hibernate.properties not found 
Sep 07, 2016 10:12:09 AM org.hibernate.cfg.Environment buildBytecodeProvider 
INFO: HHH000021: Bytecode provider name : javassist 
Sep 07, 2016 10:12:09 AM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver resolveEntity 
WARN: HHH90000012: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/hibernate-configuration. Use namespace http://www.hibernate.org/dtd/hibernate-configuration instead. Support for obsolete DTD/XSD namespaces may be removed at any time. 
Sep 07, 2016 10:12:09 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> 
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 
Sep 07, 2016 10:12:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) 
Sep 07, 2016 10:12:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001005: using driver [org.hsqldb.jdbcDriver] at URL [jdbc:hsqldb:hsql://3306/htmanytoone?useSSL=false] 
Sep 07, 2016 10:12:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001001: Connection properties: {user=root, password=****} 
Sep 07, 2016 10:12:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001003: Autocommit mode: false 
Sep 07, 2016 10:12:09 AM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init> 
INFO: HHH000115: Hibernate connection pool size: 1 (min=1) 
Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:267) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:231) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) 
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51) 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:240) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352) 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111) 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83) 
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418) 
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726) 
    at withMaven.hibernateMaven1.play.main(play.java:13) 
Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect 
    at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:115) 
    at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.java:101) 
    at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:123) 
    at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:41) 
    at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58) 
    at org.hibernate.engine.jdbc.connections.internal.PooledConnections.addConnections(PooledConnections.java:123) 
    at org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:42) 
    at org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:20) 
    at org.hibernate.engine.jdbc.connections.internal.PooledConnections$Builder.build(PooledConnections.java:161) 
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:109) 
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:72) 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:240) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:257) 
    ... 14 more 
Caused by: java.sql.SQLTransientConnectionException: java.net.SocketException: Network is unreachable: connect 
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source) 
    at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source) 
    at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source) 
    at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38) 
    ... 29 more 
Caused by: org.hsqldb.HsqlException: java.net.SocketException: Network is unreachable: connect 
    at org.hsqldb.ClientConnection.openConnection(Unknown Source) 
    at org.hsqldb.ClientConnection.initConnection(Unknown Source) 
    at org.hsqldb.ClientConnection.<init>(Unknown Source) 
    ... 33 more 
Caused by: java.net.SocketException: Network is unreachable: connect 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
    at java.net.PlainSocketImpl.connect(Unknown Source) 
    at java.net.SocksSocketImpl.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at java.net.Socket.<init>(Unknown Source) 
    at java.net.Socket.<init>(Unknown Source) 
    at org.hsqldb.server.HsqlSocketFactory.createSocket(Unknown Source) 
    ... 36 more 

回答

1

如果你想使用MySQL,你必須要改變這一行:

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost/htmanytoone?useSSL=false</property> 
+0

我奧斯陸修改:<映射類= 「withMaven.hibernateMaven1.Student」/> <映射類= 「withMaven.hibernateMaven1.Address」/>爲make移動代碼 – Francesco