gpt4 book ai didi

java - 是否可以使用 JPA/Hibernate 为非映射列设置 `null` 值?

转载 作者:行者123 更新时间:2023-11-29 10:45:07 27 4
gpt4 key购买 nike

我有一个包含很多字段的现有表,其中一些字段没有默认值,如下所示。

在我的实体类中我只想声明一些字段

当我尝试插入新行时,收到错误字段“hours_work”没有默认值

+------------------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+---------------+------+-----+---------+----------------+
| ...
| hours_work | text | NO | | NULL | |
| locations | text | NO | | NULL | |
| ...

然后,我将 sql_mode 设置为 ''

mysql> set @@sql_mode='';
Query OK, 0 rows affected (0.00 sec)

所以我可以通过命令行插入行,但不能使用我的应用程序

mysql> insert into MyTable (column1) values ('test value');
Query OK, 1 row affected, 84 warnings (0.00 sec)

我尝试在 URL 连接中设置 sql_mode 就像我在一些帖子中看到的那样,但没有成功

application.yml

main:
datasource:
url: jdbc:mysql://localhost/my_database?sessionVariables=sql_mode=''

我很感激任何建议!

最佳答案

根据下面的 Sébastien 解释,我能够通过添加 jdbcCompliantTruncation=false 到 MySQL URL 连接来修复此问题。

Sébastien,

The driver needs the STRICT_TRANS_TABLES mode enabled to enforce JDBC compliance on truncation checks.

If you can't use STRICT_TRANS_TABLES as part of your sql_mode, then you'll have to disable truncation checks by adding "jdbcCompliantTruncation=false" as a URL configuration parameter.

根据 Sébastien 的说法,地址:https://bugs.mysql.com/bug.php?id=23371

现在 URL 连接看起来像

main:
datasource:
url: jdbc:mysql://localhost/edirectory_domain?jdbcCompliantTruncation=false&sessionVariables=sql_mode=''

关于java - 是否可以使用 JPA/Hibernate 为非映射列设置 `null` 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44732107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com