I tried to create this java application:
a student entity and an address entity (the some address can be used for many students)
(I do not think it's a library problem because I performed a similar exercise)
I created only a htmanytoone schemas on mysql, and I want hibernate it to take care of creation and management of the entities on DB
Student.java:
Code:
package code;
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;
   }
   
}
Adress.java:
Code:
package code;
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)
   public String getStreet() {
      return this.street;
   }
   public void setStreet(String street) {
      this.street = street;
   }
   @Column(name = "address_city", nullable = false, length=50)
   public String getCity() {
      return this.city;
   }
   public void setCity(String city) {
      this.city = city;
   }
   @Column(name = "address_state", nullable = false, length=50)
   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 (main):
Code:
package code;
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();
      //Session session = HibernateUtil.getSessionFactory().openSession();
      Transaction transaction = null;
      try {
         transaction = session.beginTransaction();
         Address address = new Address("OMR Road", "Chennai", "TN", "600097");
         //By using cascade=all option the address need not be saved explicitly when the student object is persisted the address will be automatically saved.
            //session.save(address);
         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.cfg.xml:
(i have add to dialect code, i try all the 2 separately)
Code:
<?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://localhost/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="hibernate.dialect"> org.hibernate.dialect.HSQLDialect</property>
        
        
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">create</property>
        <mapping class="Student" />
        <mapping class="Address" />
    </session-factory>
</hibernate-configuration>
console: 
(with  <property name="dialect">org.hibernate.dialect.MySQLDialect</property> )
Code:
Sep 04, 2016 12:51:24 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.2.2.Final}
Sep 04, 2016 12:51:24 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Sep 04, 2016 12:51:24 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Sep 04, 2016 12:51:24 PM 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 04, 2016 12:51:25 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Sep 04, 2016 12:51:25 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
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 code.play.main(play.java:13)
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [org.hsqldb.jdbcDriver]
   at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:229)
   at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.loadDriverIfPossible(DriverManagerConnectionProviderImpl.java:160)
   at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildCreator(DriverManagerConnectionProviderImpl.java:116)
   at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:100)
   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.lang.ClassNotFoundException: Could not load requested class : org.hsqldb.jdbcDriver
   at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:217)
   at java.lang.ClassLoader.loadClass(Unknown Source)
   at java.lang.ClassLoader.loadClass(Unknown Source)
   at java.lang.Class.forName0(Native Method)
   at java.lang.Class.forName(Unknown Source)
   at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:226)
   ... 26 more