是否可以使用 JPA/Hibernate 为非映射列设置“null”值?
Is it possible set `null` value for non mapped columns using JPA/Hibernate?
我有一个现有的 table,其中有很多字段,其中一些没有默认值,如下所示。
在我的实体中 class 我只想声明一些字段。
当我尝试插入新行时,出现错误 Field 'hours_work' doesn't have a default value
。
+------------------------+---------------+------+-----+---------+----------------+
| 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=''
我有一个现有的 table,其中有很多字段,其中一些没有默认值,如下所示。
在我的实体中 class 我只想声明一些字段。
当我尝试插入新行时,出现错误 Field 'hours_work' doesn't have a default value
。
+------------------------+---------------+------+-----+---------+----------------+
| 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=''