如何在JPA(Hibernate)中映射Class <! - ? - >

时间:2018-04-10 20:54:10

标签: java hibernate orm

我正在使用Hibernate编写应用程序,我想知道如何映射定义为的实体:

@Entity
public Class MyEntity implements Serializable {
    @Id
    private Long id;

    @Column
    private Class<?> clazz;

    // getters/setters...
}

是否可以将其映射到数据库?我应该为clazz添加额外的注释吗?

请注意,这是好奇心,我这次不赶时间,所以请不要尝试提供备用解决方案。提前感谢您的回答。

1 个答案:

答案 0 :(得分:1)

开箱即用的Class对象没有JPA映射,但为了满足大多数(如果不是全部)用例,你可以做类似的事情

@Entity
public Class MyEntity implements Serializable {
    @Id
    private Long id;

    @Column
    private String clazz;

    public Class getClazz () {
        return this.clazz != null ? Class.forName(this.clazz) : null; 
    }

    public Class setClazz (Class clazz) {
        this.clazz = clazz.getName();
    }
}

在这种情况下,您只是将类的名称存储为String,然后当您从数据库中检索它时,getter会将其转换为适当的类对象。