我有以下字段声明:
@Entity
@Table
public class ConnectionInformation implements Serializable {
@Enumerated(EnumType.STRING)
@Column
private ConnectionType connectionType;
....
}
在数据库
connectionType
是varchar
字段中,用户可以在其中键入任何字符串。我有一个要求,如果用户在此字段中键入错误,我应该记录特定的错误。
从数据库读取实体时,如何在Java代码中检查它?
现在我的道方法抛出
Unknown name value [trololo] for enum class [package.ConnectionType]
....
'org.springframework.dao.InvalidDataAccessApiUsageException' exception.
恐怕我不能依赖异常类型。可以为另一个字段抛出异常。
最佳答案
我认为,如果将connectionType
映射为String
类型会更好
@Entity
@Table
public class ConnectionInformation implements Serializable {
@Column
private String connectionType;
@Transient
public ConnectionType getConnectionTypeAsEnum() {
return connectionType == null ? null : ConnectionType.valueOf(connectionType);
}
public void assertConnectionType() {
try {
getConnectionTypeAsEnum();
} catch(IllegalArgumentException ex) {
throw new IllegalArgumentException(
String.format("Invalid `connectionType`: %s", conectionType), ex);
}
}
}