No se pudo obtener el constructor para org.hibernate.persister.entity.SingleTableEntityPersister

En realidad soy nuevo en hibernación y he intentado configurar 2 clases. Cuenta y Persona. Ahora todo lo que trato de hacer es crear una dependencia bidireccional uno a uno usando anotaciones. Aquí hay algunos detalles y fragmentos de código:

Aquí están mis bibliotecas que agregué a la ruta de compilación, tal vez me perdí algo:

http://prntscr.com/1jbew4

Cuenta:

package backend;

import java.util.Random;
import java.util.Collection;
import java.util.TreeSet;
import javax.persistence.*;

@Entity
@Table(name = "Account")
public class Account {

    public static Random rnd = new Random();
    private int id;
    private String username;
    private long password;
    private long salt;
    private Person person;
    private String role;
    private Collection<Account> friendlist;

    public Account() {

    }

    public Account(String username, long password, Person person, String role) {
        super();
        this.username = username;
        this.password = password;
        this.setSalt();
        this.person = person;
        this.role = role;
        this.friendlist = new TreeSet<Account>();
    }

    @Id
    @GeneratedValue
    @Column(name = "Id")
    public int getId() {
        return id;
    }

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

    @Column(name = "Username")
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Column(name = "Password")
    public long getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = (long) salt + password.hashCode();
    }

    @Column(name = "Salt")
    public long getSalt() {
        return salt;
    }

    public void setSalt() {
        this.salt = rnd.nextLong();
        if (this.salt < 0) {
            this.salt = this.salt * (-1);
        }
    }

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "Person_FK")
    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    @Column(name = "Role")
    public String getRole() {
        return role;
    }

    public void setRole(String role) {
}

Persona:

package backend;

import javax.persistence.*;

@Entity
@Table(name ="Person")
public class Person {

    private int id;
    private String firstName;
    private String lastName;
    private String street;
    private int houseNumber;
    private String tel;
    private String email;
    private String mobile;
    private Account account;

    public Person() {

    }

    public Person(int id, String firstName, String lastName, String street,
            int houseNumber, String tel, String email, String mobile,
            Account account) {
        super();
        this.id= id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.street = street;
        this.houseNumber = houseNumber;
        this.tel = tel;
        this.email = email;
        this.mobile = mobile;
        this.account = account;
    }

    @Id
    @GeneratedValue
    @Column(name="Id")
    public int getId() {
        return id;
    }

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

    @Column(name="Firstname")
    public String getFirstName() {
        return firstName;
    }

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


    @Column(name="Lastname")
    public String getLastName() {
        return lastName;
    }

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

    @Column(name="Street")
    public String getStreet() {
        return street;
    }

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

    @Column(name="Housenumber")
    public int getHouseNumber() {
        return houseNumber;
    }

    public void setHouseNumber(int houseNumber) {
        this.houseNumber = houseNumber;
    }

    @Column(name="Tel")
    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    @Column(name="Email")
    public String getEmail() {
        return email;
    }

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

    @Column(name="Mobile")
    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    @OneToOne(mappedBy = "person", cascade = CascadeType.ALL)   
    public Account getAccount() {
        return account;
    }

    public void setAccount(Account account) {
        this.account = account;
    }
}

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>
        <!-- Alternative 1: MySQL -->

        <!-- Database connection settings: MySQL -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql:///chat.application.db</property>
        <property name="connection.username">root</property>
        <property name="connection.password"></property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>


        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>


        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

        <!-- Disable the second-level cache -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">create</property>

        <property name="hibernate.format_sql">true</property>

        <!-- Auflistung der gemappten Klassen (Package + Class-Name) -->
        <mapping class="backend.Account"/>
        <mapping class="backend.Person"/>

        <!-- <mapping class="backend.Role"/> -->
    </session-factory>
</hibernate-configuration>

Y aquí está mi problema. cuando trato de comenzar una clase principal simple creando algunos objetos y guardándolos, solo para probar, obtengo esto:

(%%%% Error al crear SessionFactory %%%% = resultado de mi try-catch antes de printStackTrace)

INFO: HHH000397: Using ASTQueryTranslatorFactory
%%%% Error Creating SessionFactory %%%% 
org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
    at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:185)
    at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:385)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1769)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1840)
    at backend.HibernateSessionFactory.currentSession(HibernateSessionFactory.java:21)
    at backend.HibernateSessionFactory.getCfg(HibernateSessionFactory.java:48)
    at backend.Main.main(Main.java:14)
Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:138)
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:188)
    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:341)
    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:507)
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:146)
    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 org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163)
    ... 7 more
Caused by: java.lang.reflect.InvocationTargetException
    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 org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:135)
    ... 16 more
Caused by: org.hibernate.PropertyNotFoundException: Could not find a setter for property salt in class backend.Account
    at org.hibernate.property.BasicPropertyAccessor.createSetter(BasicPropertyAccessor.java:252)
    at org.hibernate.property.BasicPropertyAccessor.getSetter(BasicPropertyAccessor.java:245)
    at org.hibernate.mapping.Property.getSetter(Property.java:326)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertySetter(PojoEntityTuplizer.java:444)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:201)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:82)
    ... 21 more
Exception in thread "main" java.lang.NullPointerException
    at backend.HibernateSessionFactory.currentSession(HibernateSessionFactory.java:28)
    at backend.HibernateSessionFactory.getCfg(HibernateSessionFactory.java:48)
    at backend.Main.main(Main.java:14)

Así que realmente no sé cómo manejar esta excepción. Traté de buscarlo en Google y todo eso, pero lo único que descubrí es que algunas personas tenían errores de ortografía en su código y esa fue la razón. pero desafortunadamente no tengo hechizos en mi código. ¿Alguien me puede ayudar? Estaré encantado de publicar también mi SessionFactoryCode o la clase principal si es necesario. Debido al hecho de que soy nuevo en hibernación, tomo todos los consejos =)

Por cierto: SQL DB se ejecuta a través de XAMPP.

Gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta