Spring MVCとHibernateを使用してPostgresQLにエンティティ(String +イメージ)を格納したい ここは私のテーブルです。イメージはoidの型であるはずです。タイプlongの値が正しくありません: - Postgresql、Hibernate、Spring
CREATE TABLE document
(
name character varying(200),
id serial NOT NULL,
content oid, // that should be the image
CONSTRAINT document_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ここに保存したいエンティティがあります。
@Entity
@Table(name = "document")
public class Document {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@Column(name="content")
private Blob content; //this is the image
//getters- setters
変数 "name"がLongではなく文字列であることがわかります。私は数値を入力し、[OK]を、それを提出した場合
<form:form method="post" action="save.html" commandName="document" enctype="multipart/form-data">
<form:errors path="*" cssClass="error"/>
<table>
<tr>
<td><form:label path="name">Name</form:label></td>
<td><form:input path="name" /></td>
</tr>
<tr>
<td><form:label path="content">Document</form:label></td>
<td><input type="file" name="file" id="file"></input></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Add Document"/>
</td>
</tr>
</table>
</form:form>
:私はそれがここに
org.postgresql.util.PSQLException: Bad value for type long : x
をスロー数値ではない値でフォームを送信すると、まだ形です。しかし、数値以外の値が上記の例外を引き起こします...私はOIDを正しく使用していないことが原因である可能性があると読んでいますが、この例外を排除するために何をすべきか分かりません。実際に私は腹筋の名前も理解していません。 「が長すぎ、の値が不正です」と表示されます。誰が長くタイプしたいですか? 変数 "name"はString型です!
は最後に、ここに何かアドバイスがにappriciatedされるコントローラ
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String save(@ModelAttribute("document") Document document, @RequestParam("file") MultipartFile file) {
try {
Blob blob = Hibernate.createBlob(file.getInputStream());
document.setContent(blob);
documentDao.save(document);
} catch (Exception e) {
e.printStackTrace();
}
return "redirect:/index.html";
}
です。
Blob宣言にhibernate @Lobアノテーションを付けることができます。また、hibernateのクエリ出力を有効にして、生成されているsqlを表示し、データベースに送信されているものに関するヒントが表示されるかどうかを確認することもできます。 – jcern
@Lob 助けてくれない、ごめんなさい –
OIDはBLOBを保持できません。 ["oid型は現在、符号なし4バイト整数として実装されています。"](http://www.postgresql.org/docs/9.0/static/datatype-oid.html)。私はそれがエラーの原因だと思います。 – madth3