One can truncate a string according to the JPA annotations in the setter for the corresponding field:
public void setX(String x) {
try {
int size = getClass().getDeclaredField("x").getAnnotation(Column.class).length();
int inLength = x.length();
if (inLength>size)
{
x = x.substring(0, size);
}
} catch (NoSuchFieldException ex) {
} catch (SecurityException ex) {
}
this.x = x;
}
The annotation itself should look like:
@Column(name = "x", length=100)
private String x;
(Based on https://stackoverflow.com/a/1946901/16673)
The annotations can be recreated from the database if the database changes, as hinted in the comment to https://stackoverflow.com/a/7648243/16673