是否可以为@ManyToOne联接指定实体名称目标

我正在尝试在以hbm.xml文件为标准的项目中使用休眠注释。但是我发现,在同一项目中尝试同时使用hbm和注释约定时,存在一些主要限制。现在的问题是,当尝试与另一个类联接时,是否可以为带有注释的类指定实体名称?

分解出的问题是,当hibernate创建上下文时,在hbm文件中指定的实体名称类似于“ Person”,但是当将注释类引入上下文时,它试图查找尝试解析依赖类时出现“ com.this.is.classpath.Person”。有没有一种方法可以指示我查找自定义实体名称而不是类路径?

我已经尝试将hbm文件中Person的实体名称更改为classpath,但这在整个项目中引起了许多问题。

注释实体:

@Entity
@Table(name = "Group")
public class Group implements Serializable {

    @Id
    @GeneratedValue
    @Column(insertable = false)
    private Long id;

    @IgnoreSizeOf
    @ManyToOne
    @JoinColumn(name = "createdBy",referencedColumnName = "PersonId")
    private Person createdBy;
}

Person类的旧hbm映射:

<hibernate-mapping package="com.this.is.classpath" default-cascade="save-update,persist,merge,lock,replicate,evict,refresh" default-access="field">
    <class name="Person" entity-name="Person" table="Person" dynamic-update="true" optimistic-lock="none" lazy="true" discriminator-value="1">

在构造休眠上下文时,将产生此输出。

Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.this.is.classpath.Group.createdBy references an unknown entity: com.this.is.classpath.Person

我调试了休眠代码,发现它正在尝试使用Person的类路径作为上下文中的实体名称,而不是hbm文件中描述的“ Person”实体名称。

sgflh 回答:是否可以为@ManyToOne联接指定实体名称目标

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3116313.html

大家都在问