我正在使用Hibernate编写应用程序,我想知道如何映射定义为的实体:
@Entity
public Class MyEntity implements Serializable {
@Id
private Long id;
@Column
private Class<?> clazz;
// getters/setters...
}
是否可以将其映射到数据库?我应该为clazz
添加额外的注释吗?
请注意,这是好奇心,我这次不赶时间,所以请不要尝试提供备用解决方案。提前感谢您的回答。
答案 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会将其转换为适当的类对象。