質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

2回答

5064閲覧

ユーザーの登録:入力内容エラーとなり登録できない

hakohako

総合スコア2

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2020/06/12 03:01

###実行したいこと

ユーザーの情報を新規登録したい
必須項目と任意項目を分けている
入力内容にエラーがあればアラートを出し
入力内容に誤りがなければ登録できるようにしたい

###解決したいこと

必須入力項目にすべて入力しても必ず「ふりがな」項目のみエラーのアラートが出てくるため、新規登録ができません。
しかし、一度登録しようと入力した内容(「ふりがな」を入力してください、のエラーで返されて知ったもの)とは異なるものを入力した場合真っ白な画面となります。
この2パターンの違いも今のところ分かっておりません。

エラー原因を探し登録できるようにしたいです。
ただJava初心者のためエラー内容が理解できず。。。

###エラー内容

↓ eclipseのコンソール画面を載せておきます。↓


Hibernate:

create table belongsNum ( belongs_id varchar(255) not null, belongs_name varchar(255) not null, primary key (belongs_id) ) engine=MyISAM

INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@a59217] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. [金 6 12 10:39:52 JST 2020]
WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement [金 6 12 10:39:52 JST 2020]
Hibernate:

create table employees ( id bigint not null auto_increment, admin_flg integer not null, belongs_num varchar(255) not null, birthday_at date not null, code varchar(255) not null, delete_flg integer not null, join_at date not null, leave_at date, name_kana varchar(255) not null, name_kanzi varchar(255) not null, primary key (id) ) engine=MyISAM

WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement [金 6 12 10:39:52 JST 2020]
Hibernate:

create table password ( password_id varchar(255) not null, password varchar(64) not null, primary key (password_id) ) engine=MyISAM

WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement [金 6 12 10:39:52 JST 2020]
Hibernate:

create table report ( report_id varchar(255) not null, create_at datetime not null, create_name varchar(255) not null, report_name varchar(255) not null, updated_at datetime not null, primary key (report_id) ) engine=MyISAM

WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement [金 6 12 10:39:52 JST 2020]
Hibernate:

alter table employees add constraint UK_3um79qgwg340lpaw7phtwudtc unique (code)

WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement [金 6 12 10:39:52 JST 2020]
INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@1febd37' [金 6 12 10:39:52 JST 2020]
INFO: HHH000397: Using ASTQueryTranslatorFactory [金 6 12 10:39:52 JST 2020]
Hibernate:
select
employee0_.id as id1_1_,
employee0_.admin_flg as admin_fl2_1_,
employee0_.belongs_num as belongs_3_1_,
employee0_.birthday_at as birthday4_1_,
employee0_.code as code5_1_,
employee0_.delete_flg as delete_f6_1_,
employee0_.join_at as join_at7_1_,
employee0_.leave_at as leave_at8_1_,
employee0_.name_kana as name_kan9_1_,
employee0_.name_kanzi as name_ka10_1_
from
employees employee0_
order by
employee0_.id DESC limit ?
WARN: SQL Error: 1054, SQLState: 42S22 [金 6 12 10:39:54 JST 2020]
ERROR: Unknown column 'employee0_.admin_flg' in 'field list' [金 6 12 10:39:54 JST 2020]
重大: サーブレット controllers.employees.EmployeeIndexServlet のServlet.service()が例外を投げました [金 6 12 10:39:54 JST 2020]
Hibernate:
select
count(employee0_.id) as col_0_0_
from
employees employee0_
where
employee0_.code=?


###エラーが発生していると思われるコード関連部分

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { EntityManager em = DBUtil.createEntityManager(); int page = 1; try{ page = Integer.parseInt(request.getParameter("page")); } catch(NumberFormatException e) {} List<Employee> employees = em.createNamedQuery("getAllEmployees", Employee.class).setFirstResult(15 * (page - 1)).setMaxResults(15).getResultList(); long employees_count = (long)em.createNamedQuery("getEmployeesCount", Long.class).getSingleResult(); em.close(); request.setAttribute("employees", employees); request.setAttribute("employees_count", employees_count); request.setAttribute("page", page); if(request.getSession().getAttribute("flush") != null){ request.setAttribute("flush", request.getSession().getAttribute("flush")); request.getSession().removeAttribute("flush"); } RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/employees/index.jsp"); rd.forward(request, response); } }
@Table(name = "employees") @NamedQueries({ @NamedQuery( name = "getAllEmployees", query = "SELECT e FROM Employee AS e ORDER BY e.id DESC" ), @NamedQuery( name = "getEmployeesCount", query = "SELECT COUNT(e) FROM Employee AS e" ), @NamedQuery( name = "checkRegisteredCode", query = "SELECT COUNT(e) FROM Employee AS e WHERE e.code = :code" ) }) @Entity public class Employee{ @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @Column(name = "code", nullable = false, unique = true) private String code; @Column(name = "name_kana", nullable = false) private String name_kana; public long getId(){ return id; } public void setId(long id){ this.id = id; } public String getCode(){ return code; } public void setCode(String code){ this.code = code; } public String getName_kana(){ return name_kana; } public void setName_kana(String name_kana){ this.name_kana = name_kana; } }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String _token = (String)request.getParameter("_token"); if(_token != null && _token.equals(request.getSession().getId())){ EntityManager em = DBUtil.createEntityManager(); Employee e =new Employee(); Password p =new Password(); Report r =new Report(); p.setPassword_id(request.getParameter("code")); r.setReport_id(request.getParameter("code")); e.setCode(request.getParameter("code")); e.setName_kana(request.getParameter("name_kana")); } List<String> errors = EmployeeValidator.validate(e, p, true, true); if(errors.size() > 0){ em.close(); request.setAttribute(_token, request.getSession().getId()); request.setAttribute("employee", e); request.setAttribute("errors", errors); RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/employees/new.jsp"); rd.forward(request, response); } else{ em.getTransaction().begin(); em.persist(e); em.getTransaction().commit(); em.close(); request.getSession().setAttribute("flush", "登録が完了しました。"); response.sendRedirect(request.getContextPath() + "/employees/index"); } } }
public class EmployeeValidator { public static List<String> validate(Employee e, Password p, Boolean code_duplicate_check_flag, Boolean password_check_flag){ List<String> errors = new ArrayList<String>(); String code_error = _validateCode(e.getCode(), code_duplicate_check_flag); if(!code_error.equals("")){ errors.add(code_error); } String name_kana_error =_validateName_kana(e.getName_kana()); if(!name_kana_error.equals("")){ errors.add(name_kana_error); } // 社員番号の必須入力チェック private static String _validateCode(String code, Boolean code_duplicate_check_flag){ // 必須入力チェック if(code == null || code.equals("")){ return "社員番号を入力してください。"; } // 既に登録されている社員番号との重複チェック if(code_duplicate_check_flag){ EntityManager em = DBUtil.createEntityManager(); long employees_count = (long)em.createNamedQuery("checkRegisteredCode", Long.class).setParameter("code", code).getSingleResult(); em.close(); if(employees_count > 0){ return "入力された社員番号の情報は既に存在しています。"; } } return ""; } // 氏名(かな)の必須入力チェック private static String _validateName_kana(String name_kana){ if(name_kana == null || name_kana.equals("")){ return "ふりがなを入力してください。"; } return ""; } }

どうかお力添えを

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/06/12 13:11

hibernate.ddl-auto 等のPropertyの設定を追記してください。
guest

回答2

0

自己解決

SQLテーブルがおかしかったようです。テーブルカラムを修正したところ解決しました

投稿2020/06/18 10:16

hakohako

総合スコア2

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

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

0

admin_flgがテーブルにはあるのにエンティティにないエラーが出てますね。

投稿2020/06/12 12:00

junzi

総合スコア279

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

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

hakohako

2020/06/12 12:39

ご回答ありがとうございます。やはりそこですよね。EntityとDBテーブルと見直してみます!
退会済みユーザー

退会済みユーザー

2020/06/12 13:08

@junzi そもそもログの出力が Entity からの自動テーブル作成だけど ⇒ Create Table が id(PK) 以外 が a-z の順序になっているし
junzi

2020/06/12 14:14

spring.jpa.hibernate.ddl-auto=createなんて事が出来るのですね!勉強になりました。 entityから自動作成してるならログのcreate文がおかしいですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問