实体未映射,但已映射

时间:2017-02-15 20:12:54

标签: java hibernate entitymanager

我有两个项目:

1为实体
1用于Web服务

使用Hibernate 4.3.11.Final时一切正常。我有一个hibernate.cfg.xml,其中包含所有类,因此使用Query

从DB中选择实体是可以的

然后我改为Hibernate 5.2.6.Final,我不得不为Query更改TypedQuery<Entity>,现在它抱怨实体未映射。

我做的测试调用了这段代码。

TypedQuery<Employee> query = getSession().createQuery(
                       "SELECT e from Employee e where e.username = :username");
query.setParameter("username", employee.getUsername());
return query.getSingleResult();

它抱怨我在查询“SELECT e from Employee ...”(不是TypedQuery中定义的那个)中选择的实体是未映射的实体。

是否有新的方法来映射5.2.6中的实体?我怎么能解决这个问题?

员工实体:

@Entity
@Table(name = "employee")
@XmlRootElement
public class Employee implements Serializable
{
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Long id;

    @Basic(optional = false)
    @Column(name = "username")
    private String username;

    // Getters & Setters...

}

hibernate.cfg.xml文件中的条目如下:

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <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">user</property>
    <property name="hibernate.connection.password">pass</property>
    <mapping class="com.entities.Employee"/>
    <mapping class="all other entities"/>

如果我将依赖关系从5.2.6.Final更改为4.3.11.Final

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.3.11.Final</version>
</dependency>

我没有问题,一切正常。

0 个答案:

没有答案