2017-08-04 20 views
0

ディスパッチャ-servlet.xmlファイル注釈を使ってHibernateでマッピングを実装する方法は?

I am trying to implement OneToMany and ManyToOne mapping in hibernate but I got error in dispatcher-servlet.xml while adding mapping class. 
It return error: 

> cvc-complex-type.2.4.a: Invalid content was found starting with 
> element 'mapping'. "http:// www.springframework.org/schema/beans"]}' 
> is expected. 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
      <property name="driverClassName" value="${database.driver}" /> 
      <property name="url" value="${database.url}" /> 
      <property name="username" value="${database.user}" /> 
      <property name="password" value="${database.password}" />  
     </bean> 

     <bean id="sessionFactory" 
      class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
      <property name="dataSource" ref="dataSource" /> 
      <property name="annotatedClasses"> 
      <list> 
      <value>com.tushar.hibernate.model.User</value> 
      <value>com.tushar.hibernate.model.Sender</value> 
      </list> 
      </property> 
      <property name="hibernateProperties"> 
      <props> 
      <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
      <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
      <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> 
      <prop key="hibernate.c3p0.max_statements">${connectionpool.maximum.statements}</prop> 
      </props> 
      </property> 
      <mapping class="com.tushar.hibernate.model.User" /> <!-- This is the line which return an error --> 
      <mapping class="com.tushar.hibernate.model.Sender" /> 
     </bean> 

モデルクラスのユーザー:

@Entity 
@Table(name = "user") 
public class User { 

    @Id 
    @GeneratedValue 
    @Column(name = "u_id") 
    private int userId; 

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

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

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

    private Set<Sender> userSenderId = new HashSet<Sender>(0); 

    public int getUserId() { 
     return userId; 
    } 

    public void setUserId(int userId) { 
     this.userId = userId; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getMobile() { 
     return mobile; 
    } 

    public void setMobile(String mobile) { 
     this.mobile = mobile; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    @OneToMany(cascade = CascadeType.ALL) 
    @JoinTable(name = "user_sender", joinColumns = { @JoinColumn(name = "u_id") }, inverseJoinColumns = { @JoinColumn(name = "s_id") }) 
    public Set<Sender> getUserSenderId() { 
     return userSenderId; 
    } 

    public void setUserSenderId(Set<Sender> userSenderId) { 
     this.userSenderId = userSenderId; 
    } 

} 

モデルクラスの送信者:

@Entity 
@Table(name = "sender") 
public class Sender { 

    @Id 
    @GeneratedValue 
    @Column(name = "s_id") 
    private int sId; 

    @Column(name = "sender_id") 
    private String senderId; 

    @ManyToOne(cascade=CascadeType.ALL) 
    private User user; 

    public int getsId() { 
     return sId; 
    } 

    public void setsId(int sId) { 
     this.sId = sId; 
    } 

    public String getSenderId() { 
     return senderId; 
    } 

    public void setSenderId(String senderId) { 
     this.senderId = senderId; 
    } 

    public User getUser() { 
     return user; 
    } 

    public void setUser(User user) { 
     this.user = user; 
    } 
} 

これは私がしたい2クラスありお互いにマップする @OneToMany to User to そして、ユーザー

への送信者のための@ManyToOneしかし、プロジェクトを実行した後、それは次のようにいくつかのエラーを返す:私はディスパッチャ-servlet.xmlにマッピングプロパティを記述することなく、モデルにマッピングを行うことを試みたときにエラーが戻るの上

Aug 05, 2017 10:20:43 PM org.apache.catalina.core.StandardContext reload 
INFO: Reloading Context with name [/spring-hibernate] has started 
Aug 05, 2017 10:20:43 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesJdbc 
SEVERE: The web application [/spring-hibernate] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 
Aug 05, 2017 10:20:43 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads 
SEVERE: The web application [/spring-hibernate] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak. 
Aug 05, 2017 10:20:44 PM org.apache.catalina.startup.TldConfig execute 
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
Aug 05, 2017 10:20:44 PM org.apache.catalina.core.ApplicationContext log 
INFO: No Spring WebApplicationInitializer types detected on classpath 
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
Aug 05, 2017 10:20:44 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'dispatcher' 
log4j:WARN No appenders could be found for logger (org.jboss.logging). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
Aug 05, 2017 10:20:45 PM org.apache.catalina.core.ApplicationContext log 
SEVERE: StandardWrapper.Throwable 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: user, for columns: [org.hibernate.mapping.Column(userSenderId)] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:684) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1282) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1195) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1085) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5349) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5641) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:4119) 
    at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:425) 
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1341) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1542) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1552) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1552) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1520) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: user, for columns: [org.hibernate.mapping.Column(userSenderId)] 
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:336) 
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:310) 
    at org.hibernate.mapping.Property.isValid(Property.java:241) 
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:496) 
    at org.hibernate.mapping.RootClass.validate(RootClass.java:270) 
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1358) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1849) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:343) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:431) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:416) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) 
    ... 30 more 

Aug 05, 2017 10:20:45 PM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet [dispatcher] in web application [/spring-hibernate] threw load() exception 
org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: user, for columns: [org.hibernate.mapping.Column(userSenderId)] 
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:336) 
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:310) 
    at org.hibernate.mapping.Property.isValid(Property.java:241) 
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:496) 
    at org.hibernate.mapping.RootClass.validate(RootClass.java:270) 
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1358) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1849) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:343) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:431) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:416) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:684) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1282) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1195) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1085) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5349) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5641) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:4119) 
    at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:425) 
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1341) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1542) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1552) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1552) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1520) 
    at java.lang.Thread.run(Thread.java:745) 

Aug 05, 2017 10:20:45 PM org.apache.catalina.core.StandardContext reload 
INFO: Reloading Context with name [/spring-hibernate] is completed 

ファイル。

答えて

1
You have already declared the model classes in the xml: 

<list> 
     <value>com.tushar.hibernate.model.User</value> 
     <value>com.tushar.hibernate.model.Sender</value> 
</list> 

You don't need to add the mapping entries, and also this configuration is used by spring and mapping tag in not allowed here. If you are using hibernate.cfg.xml file then you can declare your mappings there(Only if you are not using annotations). 

You just need to add @Entity annotation on top of your model classes. 
+0

こんにちは、私は既にモデルクラスで@Entityを使用していますが、マッピングはできません。 –

0
<mapping class="com.tushar.hibernate.model.User" /> 

このタグは<bean>タグ内に存在していない..です

あなたが休止状態の設定ファイルを持っている場合は、春のcfgファイル -

のSessionFactoryの豆でそのcfgファイルを設定するには、次のタグを使用します
<property name="configLocation" value="hibernate_cfg_file_name"/> 

<mapping>タグを削除すると、プログラムが動作する可能性があります。

try ...

+0

こんにちはNavnathさん、タグを削除しました。また、dispatcher-servlet.xmlもエラーになりましたが、プロジェクトを実行した後、上記のいくつかのエラーが返されます。 –

+0

@TusharKharat上記のエラーは、MySQL 5.1.Xから発生する可能性があります。mysql 5.1.35 connector jar –

+0

は、mysql 5.1.35 connector jarを使用して問題を解決しませんでした。まだ同じエラーが来る –

関連する問題