2012-02-06 21 views
11

私はSpring Rooで最初に作成されたJPA(Hibernate)を使用するSpringアプリケーションを持っています。その理由のために、私は@Lobでフィールドを注釈を付けてきたので、私は、任意の長さの文字列を格納する必要があります。Postgresqlに任意の長さの文字列を格納

public class MyEntity{ 

    @NotNull 
    @Size(min = 2) 
    @Lob 
    private String message; 

    ... 
} 

アプリケーションは、ローカルホストで[OK]を動作しますが、私はそれを外部サーバにそれを展開してきましたエンコードの問題が発生しました。そのため、私はPostgreSQLデータベースに格納されているデータが大丈夫かどうかをチェックしたいと思います。アプリケーションはテーブルを自動的に作成/更新します。そして、そのフィールド(メッセージ)のためには、型の列を作成しました:NOT NULLの

テキストを

問題は、私はちょうどテーブルを参照する場合、またはデータを格納した後、その列のSELECTを行うということです私はテキストではなく数字を見ることができます。これらの数字は、その情報が格納されている「どこか」の識別子と思われます。

これらの識別子が何であるかを誰にでも教えてもらえますか?また、pgAdminまたはselect句から@Lob列に格納されたデータを見る方法があれば教えてください。

JPAに任意の長さのストリングを格納する方法はありますか?

ありがとうございました。

+0

あなたは 'pgAdmin'でDBを閲覧しようとしましたか?あなたは列のテキストを見ることができますか? – beerbajay

+0

@beerbajayええ、私は試しましたが、pgAdminを参照するかSELECTだけを実行すると、正しいテキストの代わりに数値(識別子)が得られます。 – Javi

+0

'text NOT NULL'はうまく見えますが、テキストを見ることができるはずです。だから、これは実際には春/休止状態/ JPAの問題のようには思えませんが、データベースの設定ミスの問題です。 – beerbajay

答えて

18

私は「@Lob」注釈をスキップお勧めしますし、このようcolumnDefinitionを使用します。それはデータベース自体を閲覧しながら、データを閲覧できますかどうかを確認

@Column(columnDefinition="TEXT") 

または

@Column(columnDefinition="LONGTEXT") 

+0

トリックに感謝します。アプリケーションで直接データをブラウズするという問題を解決し、エンコーディングの問題も解決していません。 @Lobに問題があるようです。 – Javi

1

@LOB定義を使用してください。正しいです。このテーブルは、カタログ - > postegreSQL-> tables - > pg_largeobjectテーブルにOIDを格納しています。

バイナリデータはここで効率的に保存され、JPAはデータを正しく取得して実装の詳細として保存します。

関連する問題