Посмотрите на GenericEnumUserType
, описанное на hibernate.org (в разделе "Гибкое решение")
Изменить Status
следующим образом:
public enum Status
{
OPERATOR_CREATED("Operator created"),
ACTIVE("Active"),
END_DATED("End dated");
private String name;
Status(String status)
{
name = status;
}
public String toString()
{
return name;
}
public Status fromString( String value )
{
if ( "Operator created".equals( value )
{
return OPERATOR_CREATED;
}
//etc
}
}
Теперь используйте аннотацию @Type
для вашей сущности.
@Entity
@Table(name = "OPERATOR")
public class Operator {
@Id
@Column(name = "ID")
private Long id;
...
@Column(name = "STATUS", columnDefinition = "VARCHAR(31)", nullable = false )
@Type( type = "my.package.GenericEnumUserType",
parameters = {
@Parameter( name = "enumClass", value = "my.package.Status" ),
@Parameter( name = "identifierMethod", value = "toString" ),
@Parameter( name = "valueOfMethod", value = "fromString" ) } )
private Status status;
...
}