0

在项目中,我使用 JPA 和 Hibernate 实现。所有实体都基于注解并列在 persistence.xml 中。

所有实体都打包到 jar 中。

我需要为几个属性(在所有实体中)定义一个 typedef,这些属性是枚举类型的字符串。在 DB 中,列是 varchar。我怎样才能做到这一点?

我可以通过添加 hbm.xml 和 hibernate-cfg.xml 来实现这一点吗?

提前致谢。

4

2 回答 2

3

直接来自文档

@org.hibernate.annotations.TypeDef 和 @org.hibernate.annotations.TypeDefs 允许你声明类型定义。这些注释可以放在类或包级别。请注意,这些定义对于会话工厂是全局的(即使在类级别定义时也是如此)。如果该类型用于单个实体,您可以将定义放在实体本身上。否则,建议将定义放在包级别。

于 2012-05-15T12:38:16.223 回答
0

如果您不能更改类但可以更改休眠配置,我认为您可以将 hibernate.mapping.precedence 更改为“hbm,class”,然后在相关类的注释中添加带有所有信息的 hbm 文件。有 hbm 语法来指定 UserType 或 EnumType。如果使用它,您还必须定义您的 UserType 类。

在接受我的话之前,您可能想在测试项目上尝试一下,我假设它会起作用,但我不确定。

将所有持久性信息从注释复制到 hbm 可能会很痛苦,并且会重复信息。如果可能,尝试找到一种方法将注释添加到类本身。

于 2012-07-25T07:17:04.797 回答