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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

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

Q&A

解決済

1回答

2864閲覧

原因のわからないコンパイルエラーがでています。

usako

総合スコア31

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

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

0グッド

1クリップ

投稿2019/09/02 08:05

前提・実現したいこと

閲覧いただき、ありがとうございます。
Eclipse,Springを使ってJAVAの勉強をしている(超)初心者です。
元々eclipse4.5 Marsで開発していた資産をeclipse2018-09に
アップデートしたのですが、以下のようなエラーが出ています。
ネットで調べても、参考になる情報が見当たらず困っています。
どなたかご教示いただけないでしょうか。

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

型 RowMapper は総称ではありません。引数 <Employee> でパラメーター化できません。
イメージ説明]

該当のソースコード

java

1AddressBookController.java) 2package jp.practice.address; 3 4import java.util.List; 5import java.util.Map; 6 7import javax.validation.Valid; 8 9import org.springframework.stereotype.Controller; 10import org.springframework.ui.Model; 11import org.springframework.validation.BindingResult; 12import org.springframework.web.bind.annotation.RequestMapping; 13 14@Controller 15@RequestMapping(value = "/book") 16public class AddressBookController { 17 private static final String INIT = "init"; 18 private static final String REFER = "refer"; 19 private static final String UPDATE = "update"; 20 private static final String LIST = "list"; 21 private static final String INSERT = "insert"; 22 private static final String DELETE = "delete"; 23 private static final String INIMSG = "従業員番号を入力してください"; 24 private static final String REFMSG = "情報が取得できました"; 25 private static final String UPDMSG = "情報を更新してください"; 26(省略) 27 private RecordManager recordManager; 28 29 private DepartmentInfoGet departmentInfoGet; 30 public AddressBookController(RecordManager recordManager,DepartmentInfoGet departmentInfoGet) { 31 this.recordManager = recordManager; 32 this.departmentInfoGet = departmentInfoGet; 33 } 34 @RequestMapping(value = "/start") 35 public String init(AddressBookForm form, Model model) { 36 model.addAttribute("message", INIMSG); 37 return INIT; 38 } 39 40 @RequestMapping(params = "reference") //参照 41 public String refer(@Valid AddressBookForm form, BindingResult result, Model model) { 42 if (result.hasErrors()) { 43 return INIT; 44 } 45 46 List<Map<String, Object>> departmentList = departmentInfoGet.getDepartmentList(); 47 model.addAttribute("departmentList", departmentList); 48 49 Employee employee = recordManager.selectEmployee(form.getId()); 50 if (employee != null) { 51 form.setName(employee.getName()); 52 form.setPhone(employee.getPhone()); 53 form.setAddress(employee.getAddress()); 54 form.setKana(employee.getKana()); 55 form.setSex(employee.getSex()); 56 form.setDepartment(employee.getDepartment()); 57 model.addAttribute("message", REFMSG); 58 return REFER; 59 } else { 60 model.addAttribute("message", ERRMSG); 61 return INIT; 62 } 63 } 64(省略)

java

1RecordManager.java) 2package jp.practice.address; 3 4import java.sql.ResultSet; 5import java.sql.SQLException; 6import java.util.List; 7import java.util.Map; 8 9import javax.swing.tree.RowMapper; 10 11import org.springframework.dao.EmptyResultDataAccessException; 12import org.springframework.dao.IncorrectResultSizeDataAccessException; 13import org.springframework.jdbc.core.JdbcTemplate; 14import org.springframework.stereotype.Component; 15//*start ***/ 16@Component 17//*e n d ***/ 18public class RecordManager { 19 private JdbcTemplate jdbcTemplate; 20 public RecordManager(JdbcTemplate jdbcTemplate) { 21 this.jdbcTemplate = jdbcTemplate; 22 } 23 24 /** 25 * 指定したID のレコードを取得 26 * 27 * @param id 28 * 従業員番号 29 * @return Employee 30 */ 31 32/**start 33 * @param name ****/ 34 public Employee selectEmployee(String id) { 35 36 try{ 37 return jdbcTemplate.queryForObject("select * from unit02.addressbook where id = ? ", 38 new Object[]{ id }, 39 new RowMapper<Employee>() {  ←★★この行でエラー★★ 40 @Override 41 public Employee mapRow(ResultSet rs, int rowNum) throws SQLException { 42 Employee employee = new Employee("","","","","",0,0); 43 employee.setId(rs.getString("id")); 44 employee.setName(rs.getString("name")); 45 employee.setPhone(rs.getString("tel")); 46 employee.setAddress(rs.getString("address")); 47 employee.setKana(rs.getString("kana")); 48 employee.setSex(rs.getInt("sex")); 49 employee.setDepartment(rs.getInt("department_cd")); 50 return employee; 51 } 52 }); 53 } catch (EmptyResultDataAccessException e) { 54 return null; 55 } 56 } 57 58 /** 59 * 指定した従業員情報を反映 60 * 61 * @param emp 62 * 従業員情報 63 */ 64 public int updateEmployee(String id,String name,String kana, String phone, String address, int sex, int department){ 65 try{ 66 return jdbcTemplate.update("update unit02.addressbook set name = ? , kana = ? , tel = ?, address = ?, sex = ? ,department_cd = ? where id = ? ", 67 new Object[]{ name , kana , phone , address, sex, department, id }); 68 } catch (IncorrectResultSizeDataAccessException e) { 69 System.out.println("data incorrect ERR"); 70 return 0; 71 } 72 } 73 public int insertEmployee(String id,String name, String kana,String phone, String address, int sex, int department){ 74 try{ 75 return jdbcTemplate.update("insert unit02.addressbook value (? , ? ,? , ? , ? , ? ,?) ", 76 new Object[]{ id, name , kana , phone , address, sex, department }); 77 } catch (IncorrectResultSizeDataAccessException e) { 78 System.out.println("data incorrect ERR"); 79 return 0; 80 } 81 } 82 public int deleteEmployee(String id){ 83 try{ 84 return jdbcTemplate.update("delete from unit02.addressbook where id = ? ", 85 new Object[]{ id }); 86 } catch (IncorrectResultSizeDataAccessException e) { 87 System.out.println("data incorrect ERR"); 88 return 0; 89 } 90 } 91 public List<Map<String, Object>> getEmployeeList() { 92 List<Map<String, Object>> list = jdbcTemplate.queryForList("select a.id,a.name,a.kana,d.name as departmentname,a.tel,a.address,a.sex from unit02.addressbook as a left join unit02.department as d on a.department_cd = d.cd order by id"); 93 return list; 94 } 95}

java

1Employee.java) 2package jp.practice.address; 3 4public class Employee { 5 6 private String id; 7 private String name; 8 private String phone; 9 private String address; 10 private String kana; 11 private int sex; 12 private int department; 13 /** 14 * @param id 15 * @param name 16 * @param kana 17 * @param phone 18 * @param address 19 * @param sex 20 * @param department 21 */ 22 public Employee(String id, String name, String kana, String phone, String address, int sex, int department) { 23 this.id = id; 24 this.name = name; 25 this.phone = phone; 26 this.address = address; 27 this.kana = kana; 28 this.sex = sex; 29 this.department = department; 30 } 31 /** 32 * @return id 33 */ 34 public String getId() { 35 return id; 36 } 37 /** 38 * @param id セットする id 39 */ 40 public void setId(String id) { 41 this.id = id; 42 } 43 /** 44 * @return name 45 */ 46 public String getName() { 47 return name; 48 } 49 /** 50 * @param name セットする name 51 */ 52 public void setName(String name) { 53 this.name = name; 54 } 55 /** 56 * @return phone 57 */ 58 public String getPhone() { 59 return phone; 60 } 61 /** 62 * @param phone セットする phone 63 */ 64 public void setPhone(String phone) { 65 this.phone = phone; 66 } 67 /** 68 * @return address 69 */ 70 public String getAddress() { 71 return address; 72 } 73 /** 74 * @param address セットする address 75 */ 76 public void setAddress(String address) { 77 this.address = address; 78 } 79 /** 80 * @return kana 81 */ 82 public String getKana() { 83 return kana; 84 } 85 /** 86 * @param kana セットする kana 87 */ 88 public void setKana(String kana) { 89 this.kana = kana; 90 } 91 /** 92 * @return sex 93 */ 94 public int getSex() { 95 return sex; 96 } 97 /** 98 * @param sex セットする address 99 */ 100 public void setSex(int sex) { 101 this.sex = sex; 102 } 103 /** 104 * @return department 105 */ 106 public int getDepartment() { 107 return department; 108 } 109 /** 110 * @param department セットする address 111 */ 112 public void setDepartment(int department) { 113 this.department = department; 114 } 115 /* (非 Javadoc) 116 * @see java.lang.Object#hashCode() 117 */ 118 @Override 119 public int hashCode() { 120 final int prime = 31; 121 int result = 1; 122 result = prime * result + ((id == null) ? 0 : id.hashCode()); 123 return result; 124 } 125 /* (非 Javadoc) 126 * @see java.lang.Object#equals(java.lang.Object) 127 */ 128 @Override 129 public boolean equals(Object obj) { 130 if (this == obj) { 131 return true; 132 } 133 if (obj == null) { 134 return false; 135 } 136 if (!(obj instanceof Employee)) { 137 return false; 138 } 139 Employee other = (Employee) obj; 140 if (id == null) { 141 if (other.id != null) { 142 return false; 143 } 144 } else if (!id.equals(other.id)) { 145 return false; 146 } 147 return true; 148 } 149} 150

試したこと

①javac -version でjavaのコンパイル環境を確認。⇒11.0.2
②eclipse>ウィンドウ>設定>java>コンパイラー>コンパイラー準拠レベルを確認⇒1.8
③①と②の同期がとれているかよく分からなかったため、②の準拠レベルを11(BETA)に変更し、フルビルドを行ったが、結果変わらず。

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

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

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

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

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

y_waiwai

2019/09/02 08:36

そのままビルドを行うとエラーメッセージが出てきます。それをそのままコピーして、追記してくれませんか。 質問は編集できます
usako

2019/09/03 02:06

y_waiwai様、ご回答ありがとうございます。 >そのままビルドを行うとエラーメッセージが出てきます。 eclipse>プロジェクト>自動的にビルドを解除して、プロジェウトのビルドを選択しても、エラーメッセージがコンソールに表示されません(泣)何か設定がおかしいのでしょうか。今後のこともあるので、お手数でなければお教えいただけるとありがたいのですが。
y_waiwai

2019/09/03 02:13

実際のコンパイルでエラーが出ないってことはそのメッセージは誤判定か警告メッセージか、でしょうか。 Eclipseのコード入力時のエラー表示というのはビルドシステムとは別でEclipseが解析して出してますんで、環境のちょっとした違いなどで誤判定がよくでます。 まあ、ビルドして問題ないなら無視して構わないと思いますが。
usako

2019/09/03 02:21

y_waiwai様、早々のご回答ありがとうございます。 >誤判定か警告メッセージか、でしょうか。 警告ではなくエラーでした。結局xebmeさまにご教授いただいたようにimport文を修正したところ、エラーは解除できたのですが、元々古いバージョンで動作していたソースのため、import文を修正してエラーが解除できたのは、不思議な気がします。
guest

回答1

0

ベストアンサー

stackoverflow
stackoverflowを見たらそれらしい問題解決がでていました。Spring 3.1.2 RowMapper parameterization

原因はeclipseが別のRowMapperをimportをしているから。

Java

1import javax.swing.tree.RowMapper;

このimportを以下に書き換える。

Java

1import org.springframework.jdbc.core.RowMapper;

これで解決しなければ、Springのバージョン情報やMavenの設定情報が必要です。

参考
The type RowMapper is not generic; it cannot be parameterized with arguments <User>
Interface RowMapper<T>

投稿2019/09/02 09:18

xebme

総合スコア1081

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

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

usako

2019/09/03 03:34 編集

xebmeさま、ご回答ありがとうございます。 ご指摘のように記述を変更したところ、エラーが無くなりました! 不思議なのは、前の環境ではこの記述で動作していたというところです。
xebme

2019/09/03 09:16

推測ですが、pom.xmlの依存関係の評価が変わったかもしれません。可能なら、RowMapper<T>だけのソースを使ってMars環境でビルドすることをおすすめします。
usako

2019/09/10 02:20

xebmeさま、ご回答ありがとうございます。 >推測ですが、pom.xmlの依存関係の評価が変わったかもしれません。 なるほど。Eclipseのバージョンが上がったことによる変化ということでしょうか。 >可能なら、RowMapper<T>だけのソースを使ってMars環境でビルドすることをおすすめします。 ご教授ありがとうございます。今すぐは無理そうですが試してみたいと思います。
xebme

2019/09/10 09:23

あくまでも推測ですから。時間があれば情報収集してみます。
usako

2019/09/11 00:06

xebmeさま、何度もご回答ありがとうございます。 >時間があれば情報収集してみます。 ありがとうございます!色々勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問