sách gpt4 ai đã đi

java - 解决 hibernate 异常问题

In lại 作者:行者123 更新时间:2023-11-30 04:56:57 26 4
mua khóa gpt4 Nike

在运行时,应用程序(基于 Java/Spring/Hibernate)会抛出以下异常:

07:18:38.511 ERROR Error for batch element #1: The insert or update value of the FOREIGN KEY "SOME_FIELD.SQL_11410213222" is not equal to any value of the parent key of the parent table.. SQLCODE=-530

堆栈跟踪仅部分有助于查找问题的根源(此处为外键约束违规)。

有没有办法也打印导致此异常的sql(或者至少是语句中使用的参数)?我知道这可以通过调整日志配置来实现,但是运行正常的语句和导致错误的语句都将被记录。我只想输出与错误语句相关的信息...这可行吗?

1 Câu trả lời

Log4Jdbc是 JDBC 代理驱动程序,可以拦截 JDBC 调用并记录诸如数据库中执行的确切 SQL 和 SQL 计时信息等信息。

好的一点是,Log4Jdbc 可以在同一行中记录绑定(bind)参数的实际值。与绑定(bind)参数显示为“?”的内置 hibenrate 日志记录相比,它大大提高了 IMO 的可读性。绑定(bind)参数的实际值显示在不同的行中。

通过将记录器 jdbc.sqlonly 的日志记录级别设置为 ERROR ,您可以限制仅在引发异常时才记录 SQL。

这里是使用 log4jdbc 和 log4j 设置日志记录的简要说明。详细配置可以引用official site

1.更改为使用 Log4Jdbc 的 JDBC 驱动程序:

 net.sf.log4jdbc.DriverSpy

2.对于您正在使用的 jdbc url,将 jdbc 替换为 jdbc:log4jdbc ,Ví dụ:

jdbc:log4jdbc:postgresql://localhost:5432/Test?protocolVersion=2

3.在log4j.properties中配置不同记录器的日志记录级别。例如,仅在抛出异常时记录 SQL:

log4j.logger.jdbc.sqlonly=ERROR

关于java - 解决 hibernate 异常问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8249575/

26 4 0
Bài viết được đề xuất: c++ - void Print(vector) 函数不打印
Bài viết được đề xuất: c++ - 只需按一次按钮即可通过 USB 发送数据
Bài viết được đề xuất: java - Android Studio。 Activity 更改后的屏幕轻弹
Bài viết được đề xuất: c++ - QML TreeView : How to get QModelIndex of childs
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com