データベースアクセスオブジェクト(DAO)クラス、エンティティクラス、およびテーブルスクリプトを作成しましたが、エンティティにマップできないエラーが発生しています。
私はhibernateフレームワークを使用しており、接続はデータベースと正しく作成されていますが、まだエラーが発生しています。以下のコードを確認して、できるだけ手助けしてください。すべてのファイルは以下のとおりです。java.lang.ClassCastException:[Ljava.lang.Object; rmc.entity.UserEntityにキャストできません
表スクリプト
DROP TABLE rmc_user;
CREATE TABLE rmc_user(
user_id VARCHAR(50) NOT NULL,
user_name VARCHAR(20) NOT NULL,
user_email VARCHAR(50) NOT NULL,
user_password VARCHAR(20),
CONSTRAINT rmc_user_user_id_pk PRIMARY KEY (user_id),
CONSTRAINT rmc_user_user_email_un UNIQUE (user_email)
);
INSERT INTO rmc_user VALUES ('101','yashik','[email protected]','gulati123');
SELECT * FROM rmc_user;
DAOクラス
package rmc.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import rmc.bean.User;
import rmc.entity.UserEntity;
import rmc.resources.HibernateUtility;
public class LoginDAOImpl implements LoginDAO {
@SuppressWarnings("deprecation")
public User getUserDetails(String userName, String password) {
SessionFactory sessionFactory = HibernateUtility.createSessionFactory();
Session session = null;
User u1 = null;
session = sessionFactory.openSession();
session.beginTransaction();
System.out.println("begin trx");
Query q1 = session
.createNativeQuery("select * from rmc_user where user_name=?");
System.out.println("begin trx");
q1.setParameter(0, userName);
System.out.println("begin trx");
@SuppressWarnings("unchecked")
List<UserEntity> l1 = q1.list();
System.out.println("begin trx");
System.out.println("size is"+l1.size());
if (l1.size() == 0) {
System.out.println("no Such user Exist");
} else if (!(l1.get(0).getPassword().equals(password))) {
System.out.println("Invalid Password");
}
System.out.println("begin trx");
u1 = new User();
u1.setEmail(l1.get(0).getEmail());
u1.setPassword(l1.get(0).getPassword());
u1.setUserId(l1.get(0).getUserId());
u1.setUserName(l1.get(0).getUserName());
session.getTransaction().commit();
if (session != null) {
session.close();
}
return u1;
}
}
エンティティークラス
package rmc.entity;
@Id
@Column(name="user_id")
private String userId;
@Column(name="user_name")
private String userName;
@Column(name="user_email")
private String email;
@Column(name="user_password")
private String password;
//getter and setter
}
エラーメッセージ
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to rmc.entity.UserEntity
at rmc.dao.LoginDAOImpl.getUserDetails(LoginDAOImpl.java:32)
at rmc.test.UserInterface.main(UserInterface.java:9)
[オブジェクト:
は、このクエリを実行すると、問題は、おそらくそれは、SQLクエリだから、q1.list()
のリターンリストは、このフォーマットを持つことになり、ここで
Query q1 = session.createNativeQuery("select * from rmc_user where user_name=?");
に位置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- Assume test is the database name -->
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/rmc
</property>
<property name="hibernate.connection.username">
******
</property>
<property name="hibernate.connection.password">
******
</property>
<!-- List of XML mapping files -->
<mapping class="rmc.entity.UserEntity"/>
</session-factory>
例外は、このライン上で発生した: 'リスト L1 = q1.list();'? –
niceman
この行にエラーはありません '} else if(!(l1.get(0).getPassword()。equals(password))){' – Yashik