我有两个项目:
1为实体
1用于Web服务
使用Hibernate 4.3.11.Final时一切正常。我有一个hibernate.cfg.xml
,其中包含所有类,因此使用Query
然后我改为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>
我没有问题,一切正常。