在hibernate中,entity-name属性的作用是什么?

时间:2014-03-18 23:37:13

标签: java hibernate

这是否意味着,我们可以在HQL中使用另一个名称diff来自它​​的类名吗?

如:

 <class  name="package.UserEntity" entity-name="user" ...>
 ...

而不是像这样使用:

from UserEntity where userId=?

我们可以像这样使用HQL:

 from user where userId=?

2 个答案:

答案 0 :(得分:2)

根据文档,名称和实体名称的定义是:

name:持久化类或接口的完全限定Java类名。如果缺少此属性,则假定映射是针对非POJO实体的。

entity-name:Hibernate3允许多次映射一个类,可能映射到不同的表。

示例:

<hibernate mapping>
    <class name="package.UserEntity" entiy-name="User1" table="User1">
        <id>.....</id>
            <property>....</property>
            <property>....</property>
     </class>

     <class name="package.UserEntity" entiy-name="User2" table="User2">
        <id>.....</id>
            <property>....</property>
            <property>....</property>
     </class>
</hibernate mapping>


Session s = SessionFactory.openSession();
List table1List = s.createQuery("FROM User1").list();

List table1List = s.createQuery("FROM User2").list();

答案 1 :(得分:1)

entity-name默认是类名。我们可以在我们的HQL查询中使用这个名称,例如普通SQL查询中的表名。

您可以在映射文件中提供任何实体名称,并在HQL中使用它而不是表名。

例如,表名是Users。然后,您可以将实体名称指定为User并在HQL中使用它 如下所示

select userName from User
相关问题