0

I am migrating entity mapping from an annotations app to hbm.xml

I error this error and not found the solution. Thanks

java.lang.Exception: Not an entity: class com.enterprise.package.user.domain.User

I have hibernate.cfg.xml in the resources folder, User.hbm.xml in one package and User.class in another

User.hbm.xml

<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.enterprise.package.role.domain.User" table="user">
        <id name="id" type="java.lang.Long">
            <column name="id" />
            <generator class="identity" />
        </id>
        <property name="username" column="username" type="java.lang.String" unique="true"/>
        <property name="password" column="password" type="java.lang.String"/>
        <many-to-one name="role" column="role_id" class="com.enterprise.package.role.domain.Role" not-null="true"/>
    </class>
</hibernate-mapping>

User.class

public final class User {
    private Long   id;
    private String username;
    private String password;
    private Role   role;

    public User() {
    }

    public User(Long id) {
        this.id = id;
    }

    public User(Long id, String username, String password, Role role) {
        this.id       = id;
        this.username = username;
        this.password = password;
        this.role     = role;
    }
...
}


hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/db</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">**</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
        <property name="show_sql">true</property>


        <mapping package="com/enterprise/package/user/infrastructure/persistence/hibernate/Role.hbm.xml"/>
        <mapping package="com/enterprise/package/user/infrastructure/persistence/hibernate/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

1 Answers1

0

I think the package of User class may be wrong in User.hbm.xml (we cant see in your snippet the package of this class)...

In User.hbm.xml instead of

com.enterprise.package.role.domain.User

may be

com.enterprise.package.user.domain.User.

francisco neto
  • 797
  • 1
  • 5
  • 13