我如何解决这个问题??java.lang.ClassCastException
白标错误页我如何解决这个问题??java.lang.ClassCastException,java,hibernate,web-services,spring-mvc,spring-boot,Java,Hibernate,Web Services,Spring Mvc,Spring Boot,白标错误页 此应用程序没有/error的显式映射,因此您将其视为回退。 2018年8月13日星期一21:40:42 出现意外错误(类型=内部服务器错误,状态=500)。 数据库测试。讲师不能强制转换为数据库测试。讲师 import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.
此应用程序没有/error的显式映射,因此您将其视为回退。
2018年8月13日星期一21:40:42
出现意外错误(类型=内部服务器错误,状态=500)。
数据库测试。讲师不能强制转换为数据库测试。讲师
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import DataBaseTest.Instructor;
@RestController
public class TestWebService {
@Autowired
private SessionFactory sessionFactory ;
@GetMapping(path="/user")
public Instructor getUser(){
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
Instructor instructor = (Instructor) session.get(Instructor.class,1);
System.out.println(instructor);
return instructor;
}
----------------------------班主任------------------------
@Entity
@Table(name="instructor")
public class Instructor {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id ;
@Column(name="first_name")
private String firstName ;
@Column(name="last_name")
private String lastName ;
@Column(name="email")
private String email ;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="instructor_detail_id")
InstructorDetails instructorDetails ;
public Instructor(){
}
public Instructor(String firstName, String lastName, String email) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public int getId() {
return id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public InstructorDetails getInstructorDetails() {
return instructorDetails;
}
public void setInstructorDetails(InstructorDetails instructorDetails) {
this.instructorDetails = instructorDetails;
}
@Override
public String toString() {
return "Instructor [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email
+ ", instructorDetails=" + instructorDetails + "]";
}
}
@Entity
@Table(name="instructor_detail")
public class InstructorDetails {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id ;
@Column(name="youtube_channel")
private String youtubeChanel ;
@Column(name="hobby")
private String hobby ;
public InstructorDetails(){
}
public InstructorDetails(String youtubeChanel, String hobby) {
super();
this.youtubeChanel = youtubeChanel;
this.hobby = hobby;
}
public int getId() {
return id;
}
public String getYoutubeChanel() {
return youtubeChanel;
}
public void setYoutubeChanel(String youtubeChanel) {
this.youtubeChanel = youtubeChanel;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "InstructorDetails [id=" + id + ", youtubeChanel=" + youtubeChanel + ", hobby=" + hobby + "]";
}
}
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- JDBC Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hb-01-one-to-one-uni?useSSL=false</property>
<property name="connection.username">hbstudent</property>
<property name="connection.password">hbstudent</property>
<!-- JDBC connection pool settings ... using built-in test pool -->
<property name="connection.pool_size">100</property>
<!-- Select our SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Echo the SQL to stdout -->
<property name="show_sql">true</property>
<!-- Set the current session context -->
<property name="current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>
----------------------------课堂讲师详细信息------------------------
@Entity
@Table(name="instructor")
public class Instructor {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id ;
@Column(name="first_name")
private String firstName ;
@Column(name="last_name")
private String lastName ;
@Column(name="email")
private String email ;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="instructor_detail_id")
InstructorDetails instructorDetails ;
public Instructor(){
}
public Instructor(String firstName, String lastName, String email) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public int getId() {
return id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public InstructorDetails getInstructorDetails() {
return instructorDetails;
}
public void setInstructorDetails(InstructorDetails instructorDetails) {
this.instructorDetails = instructorDetails;
}
@Override
public String toString() {
return "Instructor [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email
+ ", instructorDetails=" + instructorDetails + "]";
}
}
@Entity
@Table(name="instructor_detail")
public class InstructorDetails {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id ;
@Column(name="youtube_channel")
private String youtubeChanel ;
@Column(name="hobby")
private String hobby ;
public InstructorDetails(){
}
public InstructorDetails(String youtubeChanel, String hobby) {
super();
this.youtubeChanel = youtubeChanel;
this.hobby = hobby;
}
public int getId() {
return id;
}
public String getYoutubeChanel() {
return youtubeChanel;
}
public void setYoutubeChanel(String youtubeChanel) {
this.youtubeChanel = youtubeChanel;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "InstructorDetails [id=" + id + ", youtubeChanel=" + youtubeChanel + ", hobby=" + hobby + "]";
}
}
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- JDBC Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hb-01-one-to-one-uni?useSSL=false</property>
<property name="connection.username">hbstudent</property>
<property name="connection.password">hbstudent</property>
<!-- JDBC connection pool settings ... using built-in test pool -->
<property name="connection.pool_size">100</property>
<!-- Select our SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Echo the SQL to stdout -->
<property name="show_sql">true</property>
<!-- Set the current session context -->
<property name="current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>
---------------------------应用----------------
@Entity
@Table(name="instructor")
public class Instructor {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id ;
@Column(name="first_name")
private String firstName ;
@Column(name="last_name")
private String lastName ;
@Column(name="email")
private String email ;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="instructor_detail_id")
InstructorDetails instructorDetails ;
public Instructor(){
}
public Instructor(String firstName, String lastName, String email) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public int getId() {
return id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public InstructorDetails getInstructorDetails() {
return instructorDetails;
}
public void setInstructorDetails(InstructorDetails instructorDetails) {
this.instructorDetails = instructorDetails;
}
@Override
public String toString() {
return "Instructor [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email
+ ", instructorDetails=" + instructorDetails + "]";
}
}
@Entity
@Table(name="instructor_detail")
public class InstructorDetails {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id ;
@Column(name="youtube_channel")
private String youtubeChanel ;
@Column(name="hobby")
private String hobby ;
public InstructorDetails(){
}
public InstructorDetails(String youtubeChanel, String hobby) {
super();
this.youtubeChanel = youtubeChanel;
this.hobby = hobby;
}
public int getId() {
return id;
}
public String getYoutubeChanel() {
return youtubeChanel;
}
public void setYoutubeChanel(String youtubeChanel) {
this.youtubeChanel = youtubeChanel;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "InstructorDetails [id=" + id + ", youtubeChanel=" + youtubeChanel + ", hobby=" + hobby + "]";
}
}
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- JDBC Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hb-01-one-to-one-uni?useSSL=false</property>
<property name="connection.username">hbstudent</property>
<property name="connection.password">hbstudent</property>
<!-- JDBC connection pool settings ... using built-in test pool -->
<property name="connection.pool_size">100</property>
<!-- Select our SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Echo the SQL to stdout -->
<property name="show_sql">true</property>
<!-- Set the current session context -->
<property name="current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>
-----------------------------hibernate.cfg2.xml------------------------------
@Entity
@Table(name="instructor")
public class Instructor {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id ;
@Column(name="first_name")
private String firstName ;
@Column(name="last_name")
private String lastName ;
@Column(name="email")
private String email ;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="instructor_detail_id")
InstructorDetails instructorDetails ;
public Instructor(){
}
public Instructor(String firstName, String lastName, String email) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public int getId() {
return id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public InstructorDetails getInstructorDetails() {
return instructorDetails;
}
public void setInstructorDetails(InstructorDetails instructorDetails) {
this.instructorDetails = instructorDetails;
}
@Override
public String toString() {
return "Instructor [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email
+ ", instructorDetails=" + instructorDetails + "]";
}
}
@Entity
@Table(name="instructor_detail")
public class InstructorDetails {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id ;
@Column(name="youtube_channel")
private String youtubeChanel ;
@Column(name="hobby")
private String hobby ;
public InstructorDetails(){
}
public InstructorDetails(String youtubeChanel, String hobby) {
super();
this.youtubeChanel = youtubeChanel;
this.hobby = hobby;
}
public int getId() {
return id;
}
public String getYoutubeChanel() {
return youtubeChanel;
}
public void setYoutubeChanel(String youtubeChanel) {
this.youtubeChanel = youtubeChanel;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "InstructorDetails [id=" + id + ", youtubeChanel=" + youtubeChanel + ", hobby=" + hobby + "]";
}
}
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- JDBC Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hb-01-one-to-one-uni?useSSL=false</property>
<property name="connection.username">hbstudent</property>
<property name="connection.password">hbstudent</property>
<!-- JDBC connection pool settings ... using built-in test pool -->
<property name="connection.pool_size">100</property>
<!-- Select our SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Echo the SQL to stdout -->
<property name="show_sql">true</property>
<!-- Set the current session context -->
<property name="current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>
我能想到的唯一可能的解释是,这是一个类加载器泄漏,如中所述 见该答复中的评论:- @Musa YUVACI-ClassLoader这种形式的泄漏通常是由于 服务器作用域类加载器中保存的引用(或 app server或开发者在WARs/EAR之外添加库。)– 麦克道尔2011年5月31日9:08 @麦克道尔:谢谢你的回复,现在可以用了。 在WARs之外添加库时出现问题。那以后呢 从glassfish服务器中删除库后,它就可以正常工作了穆萨尤瓦奇 2011年5月31日13:35
您确定消息是“无法将X强制转换为X”(即相同的类名,而不是实际的X)?因为这没有任何意义。是的,我复制了错误的原样:/当我使用MainClass进行测试时,sessionFactory使用相同的代码正确返回讲师对象!!检查这些类的导入,这看起来像@zaplDataBaseTest中提到的两个同名的不同类。讲师不能转换为DataBaseTest。讲师包名称为“DataBaseTest”,因此是同一个类