Java 发生故障时显示绑定到查询的参数

Java 发生故障时显示绑定到查询的参数,java,mysql,eclipselink,Java,Mysql,Eclipselink,在MySQL中使用Eclipselink。当我的实体未正确验证且无效数据试图泄漏到数据库中时,将引发运行时异常,并提供以下详细信息: Caused by: org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Exception [EclipseLi

在MySQL中使用Eclipselink。当我的实体未正确验证且无效数据试图泄漏到数据库中时,将引发运行时异常,并提供以下详细信息:

Caused by: org.springframework.transaction.TransactionSystemException: Could not commit
JPA transaction; nested exception is javax.persistence.RollbackException: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.0.v20130815-a4708b6):
org.eclipse.persistence.exceptions.DatabaseException Internal Exception:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'ip_address' at row 1
Error Code: 1406
Call: INSERT INTO statistics (action_name, created_at, ip_address, object_id, object_type, user_id) VALUES (?, ?, ?, ?, ?, ?)
     bind => [6 parameters bound]
Query: InsertObjectQuery(com.example.Statistics@3153ead4)"
我的问题是:如何发现异常中绑定参数的值并将其保存在日志中?绑定的
6个参数
没有多大帮助


编辑:

简单而强大的解决方案是重写实体的
toString()
方法。然后将在日志中使用,显示即将保存的对象的详细信息:

...
Call: INSERT INTO statistics (action_name, created_at, ip_address, object_id, object_type, user_id) VALUES (?, ?, ?, ?, ?, ?)
  bind => [6 parameters bound]
Query: InsertObjectQuery(Statistics{ID=null, ObjectType=PRODUCT, Action=VIEW, ObjectId=1, User=null, IP=someRandomInvalidTooLongIpAddress})"

但是,我仍然想知道是否有任何标志可以设置为自动展开
X参数绑定
短语。

您可以使用eclipselink.logging.parameters持久性属性启用参数日志记录:

<property name="eclipselink.logging.parameters" value="true"/>


有关登录EclipseLInk的更多信息,请参阅。

您可以使用EclipseLInk.logging.parameters持久性属性启用参数日志记录:

<property name="eclipselink.logging.parameters" value="true"/>

有关登录EclipseLInk的更多信息,请参阅