
DAOクラスから特定のテーブルを検索するメソッドを実装して動かしているのですが検索メソッド(findAllPreUserId)が呼ばれません。System.out.printを使ってどこまで処理が動いているのか確認したところEntityManagerの初期化はできていそうに見えます。(もしできていなければ「PersisitenceExceptionで「Unable to build Hibernate SessionFactory」という趣旨のエラーが発生する認識です。)
影響ありそうな箇所は確認しましたが特に設定ミス等はなさそうなのですが、JPA、Hibernateにお詳しい方がいましたら、ご回答をお願いいたします。
DAOクラス
Java
1package registration.dao; 2 3import java.io.Closeable; 4import java.io.IOException; 5import java.util.List; 6 7import javax.persistence.EntityManager; 8import javax.persistence.EntityTransaction; 9import javax.persistence.Persistence; 10 11import registration.entity.PreUserEntity; 12import util.dao.ResourceDAO; 13 14/** 15 * 仮ユーザーテーブルにアクセスする 16 * 17 * @author user 18 * 19 */ 20public class PreUserDAO implements Closeable, ResourceDAO { 21 22 final static String COMPLETED = "Comleted"; 23 private final static String SQL_FIND_ALL_PRE_COSTOMER_ID = "PreUser.findAllPreCostomerId"; 24 25 EntityManager em = null; 26 EntityTransaction et = null; 27 28 public PreUserDAO() { 29 System.out.println("entityManagerの設定"); 30 em = Persistence.createEntityManagerFactory("restaurant").createEntityManager(); 31 } 32 33 /** 34 * 仮ユーザーテーブルにレコードを挿入します 35 * 36 * @param preCostomerId 37 */ 38 @Override 39 public void insert(String preCostomerId, String processName) { 40 //TODO 未実装 41 } 42 43 44 //仮ユーザIDを検索して取得します 45 public void findAllPreUserId() { 46 System.out.println("検索を始めます"); 47 List<PreUserEntity> entity = em.createQuery(SQL_FIND_ALL_PRE_COSTOMER_ID, PreUserEntity.class).getResultList(); 48 49 if (entity.size() != 0) { 50 System.out.println("検索成功"); 51 } else { 52 System.out.println("検索失敗"); 53 } 54 em.close(); 55 } 56 57 @Override 58 public void close() throws IOException { 59 if (em != null) { 60 em.close(); 61 } 62 } 63} 64
Entityクラス
Java
1package registration.entity; 2 3import java.io.Serializable; 4import java.util.Date; 5 6import javax.persistence.Column; 7import javax.persistence.Entity; 8import javax.persistence.Id; 9import javax.persistence.Table; 10import javax.persistence.Temporal; 11import javax.persistence.TemporalType; 12 13import org.hibernate.annotations.NamedQueries; 14import org.hibernate.annotations.NamedQuery; 15 16/** 17 * The persistent class for the pre_user database table. 18 * 19 */ 20@Entity 21@Table(name = "pre_user") 22@NamedQueries({ 23 @NamedQuery(name = "PreUser.findAllPreUserId", query = "SELECT p FROM pre_user p"), 24 @NamedQuery(name = "PreUser.findAllPreCostomerId", query = "SELECT NEW registration.entity.PreUserEntity (p.preCustomerId) FROM pre_user p") 25}) 26 27public class PreUserEntity implements Serializable { 28 29 private static final long serialVersionUID = 1L; 30 31 @Id 32 @Column(name="pre_customer_id") 33 private String preCustomerId; 34 35 @Column(name="process_name") 36 private String processName; 37 38 @Column(name="process_status") 39 private String processStatus; 40 41 @Temporal(TemporalType.TIMESTAMP) 42 @Column(name="register_time") 43 private Date registerTime; 44 45 @Column(name="register_user") 46 private String registerUser; 47 48 @Temporal(TemporalType.TIMESTAMP) 49 @Column(name="update_time") 50 private Date updateTime; 51 52 @Column(name="update_user") 53 private String updateUser; 54 55 public PreUserEntity() { 56 } 57 58 public PreUserEntity(String preCostomerId) { 59 this.preCustomerId = preCostomerId; 60 } 61 62 public String getPreCustomerId() { 63 return this.preCustomerId; 64 } 65 66 public void setPreCustomerId(String preCustomerId) { 67 this.preCustomerId = preCustomerId; 68 } 69 70 public String getProcessName() { 71 return this.processName; 72 } 73 74 public void setProcessName(String processName) { 75 this.processName = processName; 76 } 77 78 public String getProcessStatus() { 79 return this.processStatus; 80 } 81 82 public void setProcessStatus(String processStatus) { 83 this.processStatus = processStatus; 84 } 85 86 public Date getRegisterTime() { 87 return this.registerTime; 88 } 89 90 public void setRegisterTime(Date registerTime) { 91 this.registerTime = registerTime; 92 } 93 94 public String getRegisterUser() { 95 return this.registerUser; 96 } 97 98 public void setRegisterUser(String registerUser) { 99 this.registerUser = registerUser; 100 } 101 102 public Date getUpdateTime() { 103 return this.updateTime; 104 } 105 106 public void setUpdateTime(Date updateTime) { 107 this.updateTime = updateTime; 108 } 109 110 public String getUpdateUser() { 111 return this.updateUser; 112 } 113 114 public void setUpdateUser(String updateUser) { 115 this.updateUser = updateUser; 116 } 117 118}
呼び出し元のビジネスロジッククラス
Java
1package registration.business_logic; 2 3import java.io.IOException; 4import java.util.Random; 5 6import registration.dao.PreUserDAO; 7 8public class RegistrationBusinessLogic { 9 PreUserDAO dao = null; 10 public void gettingPreUserIdFromDatabase() throws IOException { 11 try { 12 dao = new PreUserDAO(); 13 System.out.println("仮会員テーブルを検索します"); 14 dao.findAllPreUserId(); 15 } finally { 16 dao.close(); 17 } 18 } 19}
コントローラー
Java
1package registration.controller; 2 3import java.util.logging.Logger; 4 5import org.apache.logging.log4j.LogManager; 6 7import registration.business_logic.RegistrationBusinessLogic; 8 9public class RegistrationController { 10 static org.apache.logging.log4j.Logger logger = LogManager.getLogger(Logger.class.getName()); 11 private RegistrationBusinessLogic logic = null; 12 13 public RegistrationController(){ 14 15 } 16 //ここで例外処理を行う 17 public void invoke(String process_code){ 18 19 try { 20 //DAOクラスを呼び出す 21 //まずは仮会員IDを発番させる 22 logic = new RegistrationBusinessLogic(); 23 logic.gettingPreUserIdFromDatabase(); 24 System.out.println("テーブル検索が完了しました"); 25 26 } catch (Exception e) { 27 //TODO 未実装 28 } 29 } 30 31} 32
persistence..xml
XML
1<?xml version="1.0" encoding="UTF-8"?> 2<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 4 version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"> 5 6 <!-- MySQL + TOMCAT--> 7 <persistence-unit name="restaurant" transaction-type="RESOURCE_LOCAL"> 8 <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 9 <exclude-unlisted-classes>false</exclude-unlisted-classes> 10 <properties> 11 <!-- DAOS --> 12 <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 13 <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/restaurant?useSSL=false" /> 14 <property name="javax.persistence.jdbc.user" value="administrator" /> 15 <property name="javax.persistence.jdbc.password" value="password" /> 16 <!-- Configuration--> 17 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> 18 <property name="hibernate.hbm2ddl.auto" value="update"/> 19 <property name="hibernate.show_sql" value="true"/> 20 <property name="hibernate.format_sql" value="true"/> 21 <property name="hibernate.archive.autodetection" value="class"/> 22 </properties> 23 </persistence-unit> 24 25 <!-- JUnit MYSQL --> 26 <!-- 27 <persistence-unit name="restaurant"> 28 <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 29 <properties> 30 <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 31 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> 32 <property name="hibernate.connection.release_mode" value="after_transaction"/> 33 <property name="hibernate.connection.username" value="administrator"/> 34 <property name="hibernate.connection.password" value="password"/> 35 <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/restaurant?useSSL=false"/> 36 </properties> 37 </persistence-unit> 38 --> 39</persistence>
※以下のクラスを作成したところ、エラーを出しつつ、
Daoクラスの検索処理からロジック処理に戻ってきたことを確認できました。
新規作成クラス:



回答8件
あなたの回答
tips
プレビュー