2017-06-24 1 views
0

私は多くのフィールドを持つ既存のテーブルを持っていますが、そのうちのいくつかはデフォルト値がありません。JPA/Hibernateを使用してマッピングされていない列に `null`値を設定することはできますか?

私のエンティティクラスでフィールドを宣言したいだけです

新しい行を挿入しようとすると、エラー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> insert into MyTable (column1) values ('test value'); 
Query OK, 1 row affected, 84 warnings (0.00 sec) 

を使用していない''

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

sql_modeを設定しました私はいくつかの記事で見たようにURLの接続が、動作しませんでした

application.yml

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

私はどんな提案に感謝!

+0

ので、あなたはいけない –

+0

のNullableになるように、私は、現在のデータベース構造に触れることができない、あなたのテーブルを変更を好きに見えますいくつかのテキストを設定するだけの選択肢がある – betorcs

+0

(= hours_workが –

答えて

1

下記のSébastienの説明に従って、MySQL URL接続にjdbcCompliantTruncation=falseを追加して修正できました。

セバスチャン、

ドライバーは切り捨てチェックのJDBC 準拠を強制するために有効にSTRICT_TRANS_TABLESモードになっている必要があります。あなたのsql_modeの一部としてSTRICT_TRANS_TABLESを使用できない場合は

、あなたはURLの設定パラメータとして 「jdbcCompliantTruncation = false」に追加することにより、切り捨てチェックを無効にする必要があります 。セバスチャンによると

https://bugs.mysql.com/bug.php?id=23371

でだから今URL接続が

main: 
    datasource: 
    url: jdbc:mysql://localhost/edirectory_domain?jdbcCompliantTruncation=false&sessionVariables=sql_mode='' 
関連する問題