Text Field using Hibernate Annotation

bernardw picture bernardw · Aug 15, 2009 · Viewed 76.3k times · Source

I am having trouble setting the type of a String, it goes like

public void setTextDesc(String textDesc) {
    this.textDesc = textDesc;
}

@Column(name="DESC")
@Lob
public String getTextDesc() {
    return textDesc;
}

and it didn't work, I checked the mysql schema and it remains varchar(255), I also tried,

@Column(name="DESC", length="9000")

or

@Column(name="DESC")
@Type(type="text")

I am trying to make the type to be TEXT, any idea would be well appreciated!

Answer

ChssPly76 picture ChssPly76 · Aug 15, 2009

You said "I checked the mysql schema and it remains varchar(255)" - did you expect Hibernate to automatically alter your database? It won't. Even if you have hibernate.hbm2ddl.auto set, I don't believe Hibernate would alter the existing column definition.

If you were to generate new database creation script, @Lob should generate "TEXT" type column if you don't specify length explicitly (or if you do and it's less that 65536). You can always force that by explicitly declaring type in @Column annotation, though keep in mind that's not portable between databases:

@Column(name="DESC", columnDefinition="TEXT")