2014-09-10 8 views
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) 

봄과 겨울잠 초보자로 생각하면 해결할 수있는 방법을 알려주세요.

+0

이 왜 SO에 게시하기 전에 구글하지 않는 선적 클래스에 대한 동일 마십시오. @Column (name = ...)과 @OneToOne을 올바르게 정의하십시오. 클래스를 @Table (name = .....)으로 정의하십시오. hibernate.cfg.xml에 엔티티 클래스 이름을 입력하십시오. – Swaraj

+0

@Swaraj - 예, 저는 그것을 봤습니다. 모든 솔루션은 스프링 빈과 관련이 있습니다. 나는 그 콩 개념을 알지 못한다. – Yoshitha

+0

이것이 문제를 해결할 것이라고 생각합니다 ..... http : //vitalflux.com/stepsget-started-spring-mvc-4-hibernate-4/ – Swaraj

답변

0
package lk.ddarz4u.sales.database; 


import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.OneToOne; 

@Entity 
@Table(name = "agency") 

public class Agency 
{ 
    @Id 
    @Column(name="agencyId") 
    private String agencyId; 

    @Column(name="agencyName") 
    private String agencyName; 

    //getter setter method 
} 

너무

관련 문제