我設計了一個示例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)
向我們展示HibernateUtil。另外,爲什麼在XML中sessionFactory的名稱? – Shadov
實體在哪裏?學生從哪裏來? – Bewusstsein
是否在應用程序的某個地方指定了''? –
alexandrum