DAO (데이터베이스 액세스 개체) 클래스, 엔티티 클래스 및 테이블 스크립트를 만들었지 만 엔티티에 매핑 할 수없는 오류가 발생합니다.
최대 절전 모드 프레임 워크를 사용하고 있으며 데이터베이스와의 연결이 제대로 이루어졌지만 여전히 오류가 발생합니다. 아래의 코드를 확인하고 가능한 모든 방법으로 도움을 받으십시오. 모든 파일은 아래에 나와 있습니다.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)
는
Query q1 = session.createNativeQuery("select * from rmc_user where user_name=?");
그것이 SQL 쿼리이기 때문에 당신이이 쿼리를 실행
이q1.list()
의 반환 목록이 형식이있을 것이다 문제는 아마 여기에있다
<?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