Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Issue persisting long strings with Hibernate

In my web application, I have a text area whose user-filled contents are ultimately persisted to the db with Hibernate. I have been running into an issue that when the user input is beyond a certain length, the persistence fails. Is there a way to indicate through Hibernate Annotations or in the configuration that this particular field should support longer strings, and that the database column type should reflect this?

Here's the exception that I'm getting:

Caused by: java.sql.BatchUpdateException: Data truncation: Data too long for column 'introText' at row 1
    at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2007)
    at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1443)
    at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
    at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
    ... 41 more
like image 554
mshafrir Avatar asked Jan 21 '10 20:01

mshafrir


2 Answers

You could use the length parameter on the annotation, like so:

@Column(length=1000)

or you could change the column type to something like text if your database supports it, like so:

@Column(columnDefinition="text")

If you are using hbm2ddl update, and the column will be created to use that type instead (database specific).

like image 89
lucas Avatar answered Nov 16 '22 02:11

lucas


I had a similar issue that I solved by assigning the hibernate "text" type to the property:

@Type(type="text")
like image 35
Samuel Rossille Avatar answered Nov 16 '22 04:11

Samuel Rossille