具有完全限定类名的HQL
假设我有实体Foo喜欢 –
package com.some.company.model; // imports @Entity public class Foo{ @Id private Long id; // getters / setters and other properties omitted }
因此,在通过HQL处理实体时,我更喜欢通过完全限定的类名来引用实体,如 –
entityManager.createQuery(String.format("delete from %s where id = :id", Foo.class.getName())) .setParameter("id", fooId) .executeUpdate();
我在@Entity
注释中注意到一件事 – 默认情况下,name属性具有实体类的非限定名称。 这让我觉得为什么名字不合格?
我应该在HQL非限定名称或完全限定名称中使用哪个?
没有必要使用完全限定名称,因为Hibernate不允许重复的实体名称。 因此,如果您在不同的包中使用了具有相同名称的不同实体。 Hibernate将抛出DuplicateMappingException。
我不认为它有所作为,但是…我更喜欢不合格的名称,因为它更短,它使我的HQL更容易理解。 我可以想到使用完全限定名称的唯一原因是你有2个不同的Foo
实体(比如,来自不同的包),在这种情况下,我更愿意将它们映射到不同的实体名称(比如, AFoo
, BFoo
)而不是使用完全限定名称以区分它们。
- Hibernate合并
- 使用注释的hibernate,我希望对一对多的关系进行排序
- c3p0说 – “java.lang.Exception:DEBUG ONLY:过期资源检出堆栈跟踪”启动一个hibernate事务
- java.lang.NoSuchMethodException:org.hibernate.validator.ClassValidator Seam weblogic 10.3
- Hibernate + PostgreSQL +网络地址类型(inet,cdir)
- 如何使用链接表在Hibernate中映射多对多列表
- ORM支持不可变类
- 如何在hibernate中使用条件对列表进行排序
- Hibernate条件查询多个条件