一尘不染

具有完全合格的类别名称的HQL

hibernate

假设我有Foo这样的实体-

package com.some.company.model;
// imports
@Entity
public class Foo{
    @Id
    private Long id;

    // getters / setters and other properties omitted   
}

因此,在通过HQL处理Entity时,我更喜欢使用完全限定的类名来引用Entity,例如-

entityManager.createQuery(String.format("delete from %s where id = :id", Foo.class.getName()))
                .setParameter("id", fooId)
                .executeUpdate();

我注意到@Entity注释中有一件事情-默认情况下,name属性具有实体类的标准名称。这让我想起为什么名字不合格?
在HQL中,我应该使用不合格名称还是完全合格名称?


阅读 233

收藏
2020-06-20

共1个答案

一尘不染

使用完全限定的名称没有意义,因为Hibernate不允许重复的实体名称。因此,如果您有不同名称的不同实体,则使用不同的程序包。Hibernate将抛出DuplicateMappingException。

2020-06-20