2012-06-04 9 views
5

मुझे स्प्रिंग + हाइबरनेट 4.1 एप्लिकेशन में एक टॉमी संबंध बनाने में कुछ समस्याएं आई हैं यह मेरी संस्था वर्ग है। प्रत्येक USER_ROLE रिकॉर्ड में उपयोगकर्ता रिकॉर्ड के लिए एफके है। मुझे इंटरनेट पर कुछ भी उपयोगी नहीं मिल रहा है।बीन वैलिडेशन रिलेशनल बाधाओं को लागू करने में त्रुटि के साथ कैसे निपटें?

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

    long id; 
    String login; 
    String password; 
    String name; 
    String surname; 
    GregorianCalendar birthDate; 
    String email; 
    GregorianCalendar joinDate; 
    String randomKey; 
    List<UserRole> userRoles = new ArrayList<UserRole>(); 

    public User(){ } //JavaBean Hibernate requirement 

    @Id 
    @GeneratedValue(generator="increment") 
    @GenericGenerator(name="increment", strategy = "increment") 
    @Column(name="USER_ID", unique=true, nullable=false) 
    public long getId() { 
     return id; 
    } 

    public void setId(long id) { 
     this.id = id; 
    } 
... 

    @OneToMany(mappedBy = "user", fetch = FetchType.LAZY) 
    public List<UserRole> getUserRoles() { 
     return userRoles; 
    } 

    public void setAccountRole(List<UserRole> aUserRoles) { 
     for (UserRole role : aUserRoles) { 
      this.addUserRole(role); 
     } 
    } 

    public void addUserRole(UserRole aRole) { 
     if (!this.userRoles.contains(aRole)) { 
      aRole.setUser(this); 
      this.userRoles.add(aRole); 
     } 
    } 
} 


@Entity 
@Table(name = "USER_ROLE") 
public class UserRole { 

    Integer roleId; 
    String role; 
    User user; 

    public UserRole() { } 

// public UserRole(String role) { 
//  this.setRole(role); 
// } 

    @Id 
    @GeneratedValue(generator="increment") 
    @GenericGenerator(name="increment", strategy = "increment") 
    @Column(name = "ROLE_ID", unique = true, nullable = false) 
    public Integer getRoleId() { 
     return roleId; 
    } 

    public void setRoleId(Integer roleId) { 
     this.roleId = roleId; 
    } 

    @Basic 
    public String getRole() { 
     return role; 
    } 

    public void setRole(String role) { 
     this.role = role; 
    } 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "USER_ID", nullable = false) 
    public User getUser() { 
     return user; 
    } 

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

और ये मेरे स्टैक ट्रेस में पहली अपवाद है:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'homeController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: pl.rafalo235.encyklopedia.model.dao.UserDAO pl.rafalo235.encyklopedia.controllers.HomeController.userDAO; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.orm.hibernate4.LocalSessionFactoryBean pl.rafalo235.encyklopedia.model.dao.UserDAO.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mySessionFactory' defined in ServletContext resource [/WEB-INF/encyklopediaDispatcherServlet-servlet.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Error applying BeanValidation relational constraints 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1189) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1103) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4935) 
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5262) 
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5257) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
+0

हो रही डिफ़ॉल्ट निर्माता से छुटकारा कोशिश करें, कि एक आवश्यकता नहीं है। – dardo

+0

आपको यह अपवाद कब मिलता है? प्रारंभ होने पर? जब आप बने रहने की कोशिश कर रहे हैं? – threejeez

उत्तर

11

वसंत में config हाइबरनेट को validation.mode जोड़ने का प्रयास करें - कोई नहीं:

<bean id="sessionFactory" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="hibernateProperties"> 
     <props> 
      .... 
      <prop key="javax.persistence.validation.mode">none</prop> 
     </props> 
    </property> 
</bean> 
+1

मेरे लिए भी काम किया .. धन्यवाद @ crudo6। –

14

मैं नहीं कर रहा हूँ वसंत का उपयोग करके और मैं हाइबरनेट 4.1.8 का उपयोग कर रहा हूं और मेरे hibernate.cfg.xml में जोड़ने में काम करता है:

<property name="javax.persistence.validation.mode">none</property> 
3

JPA और हाइबरनेट का उपयोग करते हुए मुझे persistence.xml को जोड़ने के लिए काम करता है:

<property name="javax.persistence.validation.mode" value="none"/> 
संबंधित मुद्दे