#Interface
interface BillCategory
#Enum 1
public enum GroceryPurchase implements BillCategory {
VEGAN,
VEGETARIAN,
PESCITARIAN,
FLEXITARIAN,
OMNIVORE
#Enum 2
enum ElectronicPurchase implements BillCategory{
SMARTPHONE, HARDWARE, SOFTWARE }
private BillCategory billCategory;
Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not determine type for: net.wizypay.wizypay.bill.model.BillCategory, at table: bill_entity, for columns: [org.hibernate.mapping.Column(bill_category)]
当然,我不知道Smartphone
怎么不是Hardware
,但是可以。以下是我将如何做到这一点(不确定我是否丢弃了您现在实际需要的东西)。使BillCategory
成为枚举。添加私有字段PurchaseType
(这也可以是另一个枚举,包含GroceryPurche
或ElectronicPurche
)和Category
(这是字符串,与枚举名称匹配)。这应该可以解决Hibernate的问题。
说明我的意思的代码:
enum BillCategory {
VEGAN("VEGAN", PurchaseType.GroceryPurchase),
VEGETARIAN("VEGETARIAN",PurchaseType.GroceryPurchase),
SMARTPHONE("SMARTPHONE", PurchaseType.ElectronicPurchase);
private String category;
private PurchaseType type;
BillCategory(String category, PurchaseType type) {
this.category = category;
this.type = type;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public PurchaseType getType() {
return type;
}
public void setType(PurchaseType type) {
this.type = type;
}
}
enum PurchaseType {
ElectronicPurchase, GroceryPurchase;
}
然后,您还应该使用@enumerated(enumtype.ordinal)
或其他一些enumtype
注释实体类中的private BillCategory;
,这取决于您希望将其保存在数据库中的方式
问题内容: 为什么Java中的枚举不能从其他枚举继承?为什么以这种方式实施? 问题答案: 例子 因为将元素添加到枚举将有效地创建超类,而不是子类。 考虑: 这与常规类的工作方式相反。我想可以以这种方式实施,但实施起来比看起来要复杂得多,而且肯定会使人们感到困惑。
问题内容: 您可以在Swift中继承枚举吗?关于枚举继承,应该注意哪些规则? 以下测试代码: 产生 问题答案: 在Swift语言中,我们有Structs,Enum和Classs。Struct和Enum通过副本传递,而类通过引用传递。只有类支持继承,枚举和结构不支持。 因此,要回答您的问题,您不能继承Enum(和Struct类型)。在这里看看:
我尝试使用@Enumerated annotation映射枚举类型,但得到以下错误: 我的工作:在postgres @entity@table(name=“test_table”)公共类TestTable{... @enumerated(enumtype.string)@column(name=“col”)private TestType col;...}
你能在Swift中继承枚举吗?关于枚举继承,应该知道哪些规则? 以下测试代码: 产生
我的JPA实体作为枚举字段 哪里 如果我用规范添加where条件 将枚举包含到规范查询中的正确方法是什么?
问题内容: 我正在编写一个库,该库具有一组预定义的枚举值。可以说,我的枚举如下所示。 现在,使用此库的客户端可能需要添加更多值。假设客户需要添加和。这不会覆盖任何现有值,而是使枚举具有5个值。 在此之后,我应该能够使用5种不变的可能性。 实现此目标的最佳方法是什么? 问题答案: 您不能具有另一个扩展,也不能通过继承将值“添加”到现有值。 但是,可以实现。 我要做的是让原始实现标记(即没有方法声明)