我有一个电影租借系统的现有数据库。每部电影都有一个评级属性。在SQL中,他们使用约束来限制此属性的允许值。
CONSTRAINT film_rating_check CHECK
((((((((rating)::text = ''::text) OR
((rating)::text = 'G'::text)) OR
((rating)::text = 'PG'::text)) OR
((rating)::text = 'PG-13'::text)) OR
((rating)::text = 'R'::text)) OR
((rating)::text = 'NC-17'::text)))
我认为使用Java枚举将约束映射到对象世界会很好。但是由于“ PG-13”和“ NC-17”中的特殊字符,不可能简单地获取允许的值。因此,我实现了以下枚举:
public enum Rating {
UNRATED ( "" ),
G ( "G" ),
PG ( "PG" ),
PG13 ( "PG-13" ),
R ( "R" ),
NC17 ( "NC-17" );
private String rating;
private Rating(String rating) {
this.rating = rating;
}
@Override
public String toString() {
return rating;
}
}
@Entity
public class Film {
..
@Enumerated(EnumType.STRING)
private Rating rating;
..
使用toString()方法,方向enum-> String可以正常工作,但是String-> enum不能正常工作。我得到以下异常:
[TopLink警告]:2008.12.09 01:30:57.434–
ServerSession(4729123)-异常[TOPLINK-116](Oracle TopLink Essentials-2.0.1(Build
b09d-fcs(12/06/2007))):
oracle.toplink.essentials.exceptions.DescriptorException异常描述:[FILM.RATING]字段中没有为值[NC-17]提供转换值。映射:oracle.toplink.essentials.mappings.DirectToFieldMapping
[rating-> FILM.RATING]描述符:RelationalDescriptor(de.fhw.nsdb.entities.Film->
[DatabaseTable(FILM)])
干杯
提摩
听起来您需要添加对自定义类型的支持:
扩展OracleAS
TopLink以支持自定义类型转换
我有一个模型,其枚举字段定义为: ClassificationEnum的定义如下: 在存储库类中,当我尝试使用Type2分类获取模型时,我得到了以下错误: 没有枚举常数[...]。产品分类 2也是包含我的枚举的类的id(可能它不相关),但我不知道为什么JPA会试图以这种方式访问我的枚举。
问题内容: 我正在尝试将Postgres自定义类型(名为transmission_result)映射到Hibernate / JPA POJO。postgres自定义类型或多或少是字符串值的枚举类型。 我创建了一个名为PGEnumUserType的自定义EnumUserType以及一个表示postgres枚举值的枚举类。当我对一个真实的数据库运行它时,我收到以下错误:’ERROR:列“状态”的类型
Go语言中是否有枚举的简单实现?像下面这样的东西?
非常感谢您在广告方面的帮助。! 使用枚举类型的扫描仪时出错。然而,我不允许在这个任务中使用Buffer(InputStreamReader)。围绕它最好的工作是什么? 我收到以下错误: 代码: import java.util.Scanner; 公开课申请{ }
我试图在Spring JPA中查询findBy...它给我一个java.util.NoSuchElementExctive。这是我的代码: 产品类型: 控制器: ServiceImpl: 服务: 提供者(这是存储库): 我看不出我做错了什么...
问题内容: 我们有一个带有postgres枚举的postgres数据库。我们开始在应用程序中构建JPA。我们也有Java枚举,它反映了postgres枚举。现在最大的问题是如何让JPA一方面理解Java枚举,另一方面理解Postgres枚举?Java方面应该很容易,但是我不确定如何进行postgres方面。 问题答案: 这涉及进行多个映射。 首先,JDBC驱动程序将Postgres枚举作为PGOb