在我的项目中,我在某些实体中使用了枚举。枚举将作为整数存储在数据库中。为此,我使用 EclipseLink 的ObjectTypeConverter。
我想使用注释,因为我使用 Spring 省略了 persistence.xml。ObjectTypeConverter
必须在实体上指定用于配置的注释。我觉得没有必要在所有使用这个枚举的类上指定注释,因为这是多余的并且不可维护。在某个实体上指定一次会起作用,但这在 OOP 设计(或该母校的任何设计)中没有意义。一个解决方案是用 注释枚举@ObjectTypeConverter
,但这不起作用,因为枚举不是实体。
无效但理想的示例:
@Entity
public class ExampleEntity
{
@Id
private Long id;
@Convert("exampleenum")
private ExampleEnum ee;
}
@ObjectTypeConverter(name = "exampleenum", objectType = ExampleEnum.class, dataType = Integer.class,
conversionValues =
{
@ConversionValue(objectValue = "A", dataValue = "100"),
@ConversionValue(objectValue = "B", dataValue = "200"),
@ConversionValue(objectValue = "C", dataValue = "300")
})
public enum ExampleEnum
{
A, B, C;
}
示例导致以下异常:
异常描述:在持久性单元中找不到与类 [class com.example.ExampleEntity] 中的元素 [field ee] 一起使用的名称为 [exampleenum] 的转换器。请确保您提供了正确的转换器名称。
由于我使用的是 Spring、JPA 和 EclipseLink,因此我接受使用这些框架的任何答案。