0
저는 봄 mcv에 익숙하지 않습니다. 스프링 mvc, java 및 최대 절전 모드 프로젝트를 만들었습니다. 나는 spring mvc 4 release를 사용했다.알 수없는 엔티티 예외
이제 최대 절전 모드에서 일대일 관계를 만드는 방법을 연습하고 있습니다. mvc-dispatcher-servlet.xml 및 web.xml 이외의 하나의 구성 XML 만 있습니다. hibernate.cfg.xml 파일입니다.
이들은 내가 작성한 두 가지 클래스입니다.
package lk.ddarz4u.sales.database;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
@Entity
public class Agency {
@Id
private String agencyId;
private String agencyName;
@OneToOne
private Shipment shipment;
public Shipment getShipment() {
return shipment;
}
public void setShipment(Shipment shipment) {
this.shipment = shipment;
}
public String getAgencyId() {
return agencyId;
}
public void setAgencyId(String agencyId) {
this.agencyId = agencyId;
}
public String getAgencyName() {
return agencyName;
}
public void setAgencyName(String agencyName) {
this.agencyName = agencyName;
}
}
는이 내가이 두 가지에 대한 테스트 클래스를 작성했습니다 출하 클래스
package lk.ddarz4u.sales.database;
import javax.persistence.*;
import java.util.Date;
@Entity
public class Shipment {
@Id
private String shipmentId;
private int Quantity;
@Temporal(TemporalType.DATE)
private Date updateDate;
public String getShipmentId() {
return shipmentId;
}
public void setShipmentId(String shipmentId) {
this.shipmentId = shipmentId;
}
public int getQuantity() {
return Quantity;
}
public void setQuantity(int quantity) {
Quantity = quantity;
}
public Date getUpdateDate() {
return updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
}
입니다.
package lk.ddarz4u.sales.database;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import java.util.Date;
public class Test_one_to1 {
public static void main() {
Date date=new Date();
Shipment shipment = new Shipment();
shipment.setQuantity(45);
shipment.setShipmentId("s1");
shipment.setUpdateDate(date);
Agency agency = new Agency();
agency.setAgencyId("A1");
agency.setAgencyName("Colombo");
agency.setShipment(shipment);
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
session.saveOrUpdate(agency);
session.saveOrUpdate(shipment);
session.getTransaction().commit();
session.close();
}
}
여기 서면 작성한 hibernate.cfg.xml 파일.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3307/SalesDelivery</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.pool_size">10</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hbm2ddl.auto">update</property>
<mapping class="lk.ddarz4u.sales.database.Agency"></mapping>
<mapping class="lk.ddarz4u.sales.database.Shipment"></mapping>
</session-factory>
</hibernate-configuration>
이렇게하면 오류가 발생합니다.
HTTP Status 500 - Request processing failed; nested exception is org.hibernate.MappingException: Unknown entity: lk.ddarz4u.sales.database.Agency
type Exception report
message Request processing failed; nested exception is org.hibernate.MappingException: Unknown entity: lk.ddarz4u.sales.database.Agency
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.MappingException: Unknown entity: lk.ddarz4u.sales.database.Agency
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:927)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
root cause
org.hibernate.MappingException: Unknown entity: lk.ddarz4u.sales.database.Agency
org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:1096)
org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1443)
org.hibernate.engine.internal.ForeignKeys.isTransient(ForeignKeys.java:242)
org.hibernate.event.internal.AbstractSaveEventListener.getEntityState(AbstractSaveEventListener.java:511)
org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:100)
org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:684)
org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:676)
org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:671)
lk.ddarz4u.sales.database.Test_one_to1.main(Test_one_to1.java:36)
lk.ddarz4u.sales.HelloController.manreg(HelloController.java:39)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:439)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:427)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
봄과 겨울잠 초보자로 생각하면 해결할 수있는 방법을 알려주세요.
이 왜 SO에 게시하기 전에 구글하지 않는 선적 클래스에 대한 동일 마십시오. @Column (name = ...)과 @OneToOne을 올바르게 정의하십시오. 클래스를 @Table (name = .....)으로 정의하십시오. hibernate.cfg.xml에 엔티티 클래스 이름을 입력하십시오. – Swaraj
@Swaraj - 예, 저는 그것을 봤습니다. 모든 솔루션은 스프링 빈과 관련이 있습니다. 나는 그 콩 개념을 알지 못한다. – Yoshitha
이것이 문제를 해결할 것이라고 생각합니다 ..... http : //vitalflux.com/stepsget-started-spring-mvc-4-hibernate-4/ – Swaraj