2016-05-13 1 views
0

だからエンティティBeanに列挙-性を有している:私は豆を保持するときSQL ServerにHibernateを使用して列挙型の値をStringとして保存するにはどうすればよいですか?

@Entity 
@Table(name = "fileAttachment") 
public class FileAttachment 

// other properties.. 

@Enumerated(EnumType.STRING) 
FileAttachmentType type; 

// getters and setters 

しかしながら、その列の値は、例えば0または1または2

として数として示されています

If println EntityManagerを使用してBeanを永続化する直前の値の場合、値はINVOICEなどのStringとして出力されますが、SQL ServerテーブルのfileAttachmentType-columnなどの値は2です。何を設定する必要がありますか?私はEnumType.STRINGがそのトリックをするだろうと思った。

答えて

1

自分でDBにテーブルを作成するのか、それともHibernateに依存していますか? 最初にカラムタイプがストリングを格納するのに適していることを確認します。 2回目の試行のような

@Column(columnDefinition = "enum('VALUE1','VALUE2')") 
+0

LiquiBaseによって実行されるSQLスクリプトで私によって作成されます。私はそれをどのように修正したのか答えを投稿した。提案していただきありがとうございます –

0

[OK]をアノテーションを使用する場合は、私は、注釈を追加したときに、この場合には、物事が働い:@Enumerated(EnumType.STRING)

をそのフィールドのゲッターにしてないように実際のフィールド。 別のプロジェクトでは、注釈がフィールド上にあって他の場所ではないときに機能します...私が理解した限り、答えは何らかの理由で古い「良い」ものですが、現在は機能しています。

誰かがこの理由をコメントすると、回答を更新します。

EDIT:その理由が見つかりました。そのEntityクラスのゲッターに既にアノテーションがありました。そのため、フィールド上のアノテーションは機能しませんでした。フィールド上にのみ注釈を付けるか、ゲッターにのみ注釈を付けるかのいずれかでなければなりません。両方のアノテーションではありません。

関連する問題