[jboss-user] [EJB/JBoss] - Does JBoss validate EntityBean length setting?

tonylmai do-not-reply at jboss.com
Tue Mar 13 15:47:30 EDT 2007


Hi all,

Would JBoss validate an Entity's attribute for length?

@Entity
  | public class ExampleName implements Serializable {
  | ...
  |     private String name;
  |     
  |     @Column(nullable = false, length=25)
  |     public String getName() {
  | ...
  | }

when I invoke the following code
ExampleName ex = new ExampleName();
  | ex.setName("A long line that violates the max length set for ExampleName");

The server threw the following exception:
anonymous wrote : 
  | 12:35:37,312 WARN  [JDBCExceptionReporter] SQL Error: 8152, SQLState: 22001
  | 12:35:37,312 ERROR [JDBCExceptionReporter] String or binary data would be truncated.
  | 12:35:37,312 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
  | org.hibernate.exception.DataException: could not insert: [com.judots.ExampleName]
  | 	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:77)
  | ...
  | Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated.
  | 	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
  | 

while on the client junit test, I would receive the following error:
anonymous wrote : 
  | java.lang.reflect.UndeclaredThrowableException
  | 	at $Proxy5.createExchange(Unknown Source)
  | 	at com.judots.test.Tests.createExampleName(Tests.java:29)
  | 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 	at java.lang.reflect.Method.invoke(Method.java:585)
  | 	at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
  | ...
  | Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerException
  | 	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
  | ...
  | 

It would be nice to have JBoss validate the length automatically without us having to declare Hibernate's validation explicitly. After all, we are using Hibernate within JBoss are we not?

Thanks
-tony

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4027664#4027664

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4027664



More information about the jboss-user mailing list