# Feld in einer @Entity als Text speichern



## bluer (10. Nov 2011)

Hi,

ich habe folgendes Problem: Ich bin gerade dabei ein Forum in JSP zu schreiben. Hierzu benutze ich eine MySQL Connection zum Speichern der Einträge. Wenn ich nun jedoch die Einträge in der Forum.java wie folgt definiere:

```
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package model.forum;

import java.io.Serializable;
import java.sql.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import model.security.User;

@Entity
public class Forum implements Serializable {

    private String entry;

    ...

    @Column( unique = true)
    public String getEntry(){ return this.entry;}

    public void setEntry( String entry){ this.entry = entry;}

    ...
}
```
Speichert er mir die Spalte entry in der DB als VARCHAR[255] und dementsprechend kann ich nur 255 Zeichen speichern. Wie sag ich meiner Entity das entry eine Textspalte ist und beliebig viele zeichen habe kann?

Vielen Dank!


----------



## Deadalus (10. Nov 2011)

Ich bin mir nicht sicher, aber versuch mal den Getter zusätzlich noch mit @Lob zu annotieren.


----------



## nillehammer (10. Nov 2011)

Es gibt in @Column das length-Attribut. Das kannst Du auch auf 2000 oder so setzen.

// Edit: Ich seh grad, Du willst Forumseinträge speichern. Die sind dann wohl auch mal länger als 2000 Zeichen. Dann nimm lieber -wie von meinem Vorredner vorgeschlagen- ein @Lob.


----------



## bluer (10. Nov 2011)

Bei dieser annotation meckert hibernate:

```
BLOB/TEXT column 'entry' used in key specification without a key length
```
muss da noch nen wert angeben?


----------



## bluer (10. Nov 2011)

Danke, funzt jetzt, hatte vergessen unique herauszunehmen, war nun eh sinnlos!


----------



## nillehammer (10. Nov 2011)

Das ist nicht Hibernate, das da meckert, sondern MySQL. Das passiert, wenn Du auf einen BLOB/TEXT, der ja sehr variabel ist, einen Index oder Unique-Constraint legst. MySQL legt diesen nur für eine genau spezifizierte Länge ab Anfang des Wertes fest. Verzichte also am besten auf das "unique=true" in Deiner @Column-Annotation

// Edit: Ups, nicht schnell genug...


----------

