Jax rs java.lang.ClassCastException:java.lang.String不能强制转换为java.lang.Enum
我在尝试将实体“UserAccount”持久化到数据库表中时遇到此错误Jax rs java.lang.ClassCastException:java.lang.String不能强制转换为java.lang.Enum,jax-rs,eclipselink,jpa-2.0,payara,java-ee-8,Jax Rs,Eclipselink,Jpa 2.0,Payara,Java Ee 8,我在尝试将实体“UserAccount”持久化到数据库表中时遇到此错误 @Entity @Table(name = "user_account") public class UserAccount extends BaseEntity { @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "useraccount_id") @MapKeyEnumerated(EnumType.STRING) private Map
@Entity
@Table(name = "user_account")
public class UserAccount extends BaseEntity {
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "useraccount_id")
@MapKeyEnumerated(EnumType.STRING)
private Map<PhoneType, PhoneNumber> phones = new HashMap<PhoneType, PhoneNumber>();
//... other attributes
//... default constructor, getters and setters
}
最后
public class UserAccountRepository {
@Inject
EntityManager entityManager;
@Override
public UserAccount save(UserAccount userAccount) {
if (userAccount.getId() == null) {
entityManager.persist(userAccount);
} else {
userAccount = entityManager.merge(userAccount);
}
return userAccount;
}
//.. other methods
}
其他有相同错误的问题建议在类型Enum的属性上添加@Enumerated(EnumType.STRING),我在电话地图上使用了@MapKeyEnumerated(EnumType.STRING)
,但我仍然看到这个错误。有什么线索表明我错在哪里吗
如果我没有按照SO指南提出问题,请告诉我,我会更正它(因为这是我的第一个问题)。我对
电话号码
类做了如下更改
@Entity
@Table(name = "phone_number")
public class PhoneNumber extends BaseEntity {
private PhoneType type;
private String areaCode;
private String number;
//... default constructor, getters and setters
}
然后在用户帐户中添加@MapKey(name=“type”)
,如下所示
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "useraccount_id")
@MapKeyEnumerated(EnumType.STRING)
@MapKey(name = "type")
private Map<PhoneType, PhoneNumber> phones = new HashMap<PhoneType, PhoneNumber>();
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name=“useraccount\u id”)
@MapKeyEnumerated(EnumType.STRING)
@映射键(name=“type”)
私有映射电话=新的HashMap();
通过这些更改,我现在能够成功地将UserAccount对象保存到db表中。我对PhoneNumber
类做了如下更改
@Entity
@Table(name = "phone_number")
public class PhoneNumber extends BaseEntity {
private PhoneType type;
private String areaCode;
private String number;
//... default constructor, getters and setters
}
然后在用户帐户中添加@MapKey(name=“type”)
,如下所示
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "useraccount_id")
@MapKeyEnumerated(EnumType.STRING)
@MapKey(name = "type")
private Map<PhoneType, PhoneNumber> phones = new HashMap<PhoneType, PhoneNumber>();
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name=“useraccount\u id”)
@MapKeyEnumerated(EnumType.STRING)
@映射键(name=“type”)
私有映射电话=新的HashMap();
通过这些更改,我现在能够成功地将UserAccount对象保存到db表中
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "useraccount_id")
@MapKeyEnumerated(EnumType.STRING)
@MapKey(name = "type")
private Map<PhoneType, PhoneNumber> phones = new HashMap<PhoneType, PhoneNumber>();