休眠未知实体:
问题描述:
我设计了一个示例crud操作,但我遇到了一个与持久化对象到数据库有关的问题,这意味着C(创建)。尽管我在实体中定义了注释,但我无法解决它。我如何解决它?谢谢。休眠未知实体:
以下是以下代码。
Customer.java
package entities;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name="CUSTOMER",schema="CRUD")
public class Customer implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name="musseq",sequenceName="musSEQ",allocationSize=1)
@GeneratedValue(generator="musseq",strategy=GenerationType.SEQUENCE)
@Column(name="ID")
private Integer id;
@Column(name="NAME")
private String name;
@Column(name="SURNAME")
private String surname;
@Column(name="DEPARTMENT")
private String department;
public Customer() {
super();
// TODO Auto-generated constructor stub
}
public Customer(String name, String surname, String department) {
super();
this.name = name;
this.surname = surname;
this.department = department;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
CustomerDAO.java
package daos;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import entities.Customer;
import util.HibernateUtil;
public class CustomerDAO implements ICustomerDAO {
@Override
public void addCustomer(Customer customer) {
// TODO Auto-generated method stub
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction trx = session.getTransaction();
try {
trx.begin();
session.persist(customer);
trx.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
if (trx != null)
trx.rollback();
} finally {
session.close();
}
}
@Override
public List<Customer> getAllCustomer() {
// TODO Auto-generated method stub
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction trx = session.getTransaction();
try {
trx.begin();
List<Customer> liste = session.createQuery("from Customer").list();
trx.commit();
return liste;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
if (trx != null)
trx.rollback();
} finally {
session.close();
}
return null;
}
@Override
public void deleteCustomer(int customerId) {
// TODO Auto-generated method stub
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction trx = session.getTransaction();
Customer customerObj= null;
try {
trx.begin();
customerObj = session.load(Customer.class, customerId);
session.delete(customerObj);
trx.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
if (trx != null)
trx.rollback();
} finally {
session.close();
}
}
}
的hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!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 name="CRUD">
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.password">123</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
<property name="hibernate.connection.username">CRUD</property>
<property name="hibernate.default_schema">CRUD</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.connection.pool_size">2</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="entities.Customer"/>
</session-factory>
</hibernate-configuration>
HibernateUtil.java
package util;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
return configuration.buildSessionFactory(
new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build());
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
错误
java.lang.IllegalArgumentException: Unknown entity: entities.Customer
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:766)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:742)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:747)
at daos.CustomerDAO.addCustomer(CustomerDAO.java:24)
at servlets.CustomerServlet.doGet(CustomerServlet.java:38)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
答
更改表名客户。我认为它会解决这个问题。 在Unix上,表名是区分大小写的。在Windows上,他们不是。
+0
我更改了表名(客户,客户,客户),但问题无法解决。它仍然是未知的实体。 java.lang.IllegalArgumentException:未知实体:entities.Customer – DRF
向我们展示HibernateUtil。另外,为什么在XML中sessionFactory的名称? – Shadov
实体在哪里?学生从哪里来? – Bewusstsein
是否在应用程序的某个地方指定了''? –
alexandrum