0
にエンティティフィールドをマッピングするときに休止状態に認識されない理由:javax.persistence.Converter @定義されたユーザーは、私は、次のエンティティは、列挙型のフィールドを含む持つデータベース列
@Entity
@Table(name = "INPUT_DATA")
public class InputDataEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "INPUT_DATA_SEQ", allocationSize = 1, sequenceName = "INPUT_DATA_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "INPUT_DATA_SEQ")
private Long id;
@Column(name = "FIELD1", nullable = false)
private String field1;
@Column(name = "FIELD2", nullable = false)
@Convert(converter = Type.Converter.class)
private Type field2;
// getters and setters
}
列挙型がどのように見えます:
public enum Type {
ENUM_ITEM_1("item1"),
// more items
ENUM_ITEM_N("itemN");
private String code;
private Type(String code) {
this.code = code;
}
public static Type fromString(String name) {
switch (name) {
case "item1":
return ENUM_ITEM_1;
// more cases
case "itemN":
return ENUM_ITEM_N;
default:
throw new IllegalArgumentException("Wrong value for Type");
}
}
@Override
public String toString() {
return code;
}
@javax.persistence.Converter
public static class Converter implements AttributeConverter<Type, String> {
@Override
public String convertToDatabaseColumn(Type attribute) {
return attribute.toString();
}
@Override
public Type convertToEntityAttribute(String s) {
return Type.fromString(s);
}
}
}
問題は、私は、データベースからデータを取得したいとき、Hibernateは私のコンバータを認識しないということです。
私も試してみた:
- @Embeddedと@Embeddableが、運を持ちます。
- @Enumerated(EnumType.STRING)ですが、再び運がありません。
私の質問は: 適切なフィールドを変換するときに、私のコンバータを認識するために休止状態にする方法?
事前に感謝します。
どのバージョンのhibernateとjpaを使用しますか? – xyz
休止状態 - 4.3.7およびjpa 2.1 - 1.0.0 – Armine