minami1
@minami1

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

JDBC ResultSetの列の抽出

解決したいこと

社員名簿の新規追加画面を作成中、MySQLのcolumn(使い方間違ってたらすみません)が1つエラーになっていたのでMySQL内にて、それを削除して同じ列に新しく別の名前のcolumnを追加しました。
ですがspringbootにうまく反映されず、エラーになったので解決方法を教えてほしいです。

ちなみにエラーになる前に追加ボタンを押したところ、エラーの画面には
なりましたがデータベースには問題なく追加できていました。

発生している問題・エラー

Could not extract column [4] from JDBC ResultSet [Zero date value prohibited] [n/a]

JDBC ResultSet から列 [4] を抽出できませんでした [ゼロの日付値は禁止] [n/a]

該当するソースコード

package com.example.demo.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.Data;

/**
 * ユーザー情報 Entity
 */
@Entity
@Data
@Table(name = "user")
public class User implements Serializable {
	/**
	 * ID
	 */
	@Id
	@Column(name = "id")
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
	/**
	 * 名前
	 */
	@Column(name = "name")
	private String name;
	/**
	 * フリガナ
	 */
	@Column(name = "name_kana")
	private String nameKana;
	/**
	 * 住所
	 */
	@Column(name = "address")
	private String address;
	/**
	 * 入社日 「joinにしていたがMySQLでエラーに
	 * なるのでjoinDayに変更した」
	 */
	@Column(name = "join_day")
	private String joinDay;
	/**
	 * 性別
	 */
	@Column(name = "gender")
	private String gender;
	/**
	 * 生年月日
	 */
	@Column(name = "birthday")
	private String birthday;
	/**
	 * 電話番号
	 */
	@Column(name = "phone")
	private String phone;
	/**
	 * 雇用形態
	 */
	@Column(name = "employment")
	private String employment;
	/**
	 * 備考
	 */
	@Column(name = "remarks")
	private String remarks;
	/**
	 * 更新日時
	 */
	@Column(name = "update_date")
	private Date updateDate;
	/**
	 * 登録日時
	 */
	@Column(name = "create_date")
	private Date createDate;
	/**
	 * 削除日時
	 */
	@Column(name = "delete_date")
	private Date deleteDate;
	
	/** 性別のMapオブジェクト */
	public Map<String, String> getGenderItems() {
		Map<String, String> genderMap = new LinkedHashMap<String, String>();
		genderMap.put("0", "男");
		genderMap.put("1", "女");
		return genderMap;
	}

	/** 雇用形態のMapオブジェクト */
	public Map<String, String> getEmploymentItems() {
		Map<String, String> employmentMap = new LinkedHashMap<String, String>();
		employmentMap.put("0", "正社員");
		employmentMap.put("1", "パート");
		employmentMap.put("2", "アルバイト");
		return employmentMap;
	}
	
}

自分で試したこと

自分で調べたり、SQLを確認しましたがわからなかったので教えてください。

0

1Answer

新しく追加したカラムに0000-00-00 00:00:00というデータが入っている可能性があります。0000-00-00 00:00:00という奇妙な日時はMySQL特有の仕様で、JDBCではうまく扱えないので、別の値でUPDATEすることをおすすめします。もしくは0000-00-00 00:00:00をNULLとして扱いたい場合はJDBCの接続URLにzeroDateTimeBehavior=convertToNullを追加するとよいです。

1Like

Comments

  1. @minami1

    Questioner

    UPDATEで日付を指定したところ、エラーがなくなりました!
    ありがとうございました!

Your answer might help someone💌