🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

11842閲覧

エラーが出てしまいます。

K_3578

総合スコア1282

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2021/01/13 03:10

編集2021/01/13 06:14

前提・実現したいこと

JavaでWebアプリケーション開発をしています。
制作中にエラーが出てしまい、理由がわからずに滞ってしまっているのでどうかお力添えをお願いいたします。

発生している問題・エラーメッセージ

HTTPステータス 500 - org.hibernate.exception.ConstraintViolationException: could not execute statement 原因 org.hibernate.exception.ConstraintViolationException: could not execute statement 原因 com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'office_name' cannot be null

該当のソースコード

package models; import java.sql.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; @Table(name = "dispatch") @NamedQueries({ @NamedQuery( name = "getAllDispatch", query = "SELECT d FROM Dispatch AS d ORDER BY d.id DESC" ), @NamedQuery( name = "getdispatchCount", query = "SELECT COUNT(d) FROM Dispatch AS d" ), }) @Entity public class Dispatch { @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Column(name = "task_date", nullable = true) private Date task_date; @Column(name = "task_type", nullable = true) private String task_type; @Column(name = "office_name", nullable = true) private String office_name; @Column(name = "truck_code", nullable = true) private String truck_code; @Column(name = "stack_area", nullable = true) private String stack_area; @Column(name = "wholesale_area", nullable = true) private String wholesale_area; @Column(name = "truck_type", nullable = true) private String truck_type; public String getTask_type(){ return task_type; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Date getTask_date() { return task_date; } public void setTask_date(Date task_date) { this.task_date = task_date; } public String getOffice_name() { return office_name; } public void setOffice_name(String office_name) { this.office_name = office_name; } public void setTask_type(String task_type){ this.task_type = task_type; } public String getTruck_code() { return truck_code; } public void setTruck_code(String truck_code) { this.truck_code = truck_code; } public String getStack_area() { return stack_area; } public void setStack_area(String stack_area) { this.stack_area = stack_area; } public String getWholesale_area() { return wholesale_area; } public void setWholesale_area(String wholesale_area) { this.wholesale_area = wholesale_area; } public String getTruck_type() { return truck_type; } public void setTruck_type(String truck_type) { this.truck_type = truck_type; } }

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

英語で意味不明と思っちゃうかもしれませんが、とりあえずスタックトレースの1行目は頑張って読んでみると良いと思います。
つまりこれですね。

org.hibernate.exception.ConstraintViolationException: could not execute statement

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'office_name' cannot be null

https://translate.google.com/

そうするとどの辺が怪しそうだと見えてくると思うので、それを取っ掛かりにしてみましょう。
問題点はプログラムなのかDB定義なのか。

投稿2021/01/13 03:21

編集2021/01/13 03:35
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K_3578

2021/01/13 05:43

回答ありがとうございます。 一度自分で解決を試みてみたのですが、今度は com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'dispatch0_.stack_area' in 'field list'というエラーが出てしまい、また頓挫しています。 指定しているカラム名は'dispatch.stack_area' のはずなのですが・・・
退会済みユーザー

退会済みユーザー

2021/01/13 06:04

まず、最初の問題が解消できたのかどうか、どうやったら解決したのかを教えてください。 teratailは情報共有の場なんで。 多分、どこかのnullableをfalseにしたとかあると思うんですよ。 次、表題の問題はマッピングの問題、すなわち前提条件の問題なので回答できましたが、 追加で躓いた部分ってプログラムを何らかの形で動作させたら発生するものだと思います。 よって、今の情報だけでは分かりません。 何をやったらどうエラーが出たかとか、この行で止まったとか、追加のソースコードなんかがあると思うんでそれを出してくれないとどうしようもないです。 エラーメッセージのテンプレ部分は検索でそこそこ見つかるんで解決策は見つかるとは思いますが…。 https://www.google.com/search?sxsrf=ALeKk00xL_v9WVlK3PKDV3umj1c8d-cyKw%3A1610517703380&ei=x4z-X-XbFtWtoATtjYzwBw&q=com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException+field+list&oq=com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException+field+list&gs_lcp=CgZwc3ktYWIQAzoECCMQJzoCCAA6BAgAEB5QsjxYn2lg8mpoA3AAeACAAakBiAHSDZIBBDEwLjeYAQCgAQGqAQdnd3Mtd2l6wAEB&sclient=psy-ab&ved=0ahUKEwil2_T8nZjuAhXVFogKHe0GA34Q4dUDCA0&uact=5 よろしくお願いします。
K_3578

2021/01/13 06:26

失礼しました。nullにしてはならないものをnullにしているということかなと思ったので、 ソースコードの @Column(name = "office_name", nullable = true) private String office_name; の箇所をtrueからfalseに変更しました。
退会済みユーザー

退会済みユーザー

2021/01/13 06:32

ナイスです。追記ありがとうございます。 追加の問題について、もし規模が大きくなりそうならこの質問自体はクローズにして、 新規に質問しても良いかもしれませんね。
K_3578

2021/01/13 06:34

ありがとうございます。 新規で質問してみようと思います。お手数お掛けして申し訳ありませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問