2014-09-06 3 views
-1

Я использую Spring 3.2 и Hibernate, но я получаю eror того, что он не позволяет создавать bean of SessionFacotry из файла XML, я не знаю, почему эта ошибка наступает. У меня есть поиск много, но не найти exceat ans, пожалуйста, помогите тем же.Ошибка при создании ошибки при создании бина с именем «bookMasterController»: не удалось выполнить инъекцию автоуведомленных зависимостей;

Вот мой файл является XML

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang" 
    xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd 
     http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"> 

    <!-- For context suppport of the Controller --> 

    <context:annotation-config></context:annotation-config> 
    <context:component-scan base-package="com.book.controller"></context:component-scan> 


    <!-- For enable the MVC Support --> 
    <!-- <mvc:annotation-driven /> 
    <mvc:resources mapping="/resources/**" location="/WEB-INF/resources/"></mvc:resources> 
--> 
    <!-- Enabling the suppot the UI user side --> 
    <bean id="jspViewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="viewClass" 
      value="org.springframework.web.servlet.view.JstlView" /> 
     <property name="prefix" value="/WEB-INF/view/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 




    <!-- For messages for the Labels --> 

    <bean id="messageSource" 
     class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
     <property name="basename" value="classpath:messages" /> 
     <property name="defaultEncoding" value="UTF-8" /> 
    </bean> 


    <!-- For the Properties of JDBC --> 
    <bean id="propertyConfigurer" 
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
     p:location="/WEB-INF/jdbc.properties" /> 

    <!--Database Properties --> 
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
     destroy-method="close" p:driverClassName="${jdbc.driverClassName}" 
     p:url="${jdbc.databaseurl}" p:username="${jdbc.username}" p:password="${jdbc.password}" /> 

    <!-- Session facotry configration --> 
    <bean id="hibernate4AnnotatedSessionFactory" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <!-- <property name="configLocation"> 
      <value>classpath:hibernate.cfg.xml</value> 
     </property> --> 
     <property name="packagesToScan" value="com.book.bookentity" /> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">${jdbc.dialect}</prop> 
       <prop key="hibernate.hbm2ddl.auto">update</prop> 
       <prop key="hibernate.show_sql">true</prop> 
      </props> 
     </property> 
    </bean> 

    <!-- implementation bean config. --> 

    <bean id="autherMasterServiceInterfacecontroller" class="com.book.service.AutherMasterServiceInterfaceImpl"></bean> 
    <bean id="bookMasterServiceInterfacecontroller" class="com.book.service.BookMasterServiceInterfaceImpl"></bean> 
    <bean id="emailMasterInterfacecontroller" class="com.book.service.EmailMasterInterfaceImpl"></bean> 
    <bean id="languageMasterinterfacecontroller" class="com.book.service.LanguageMasterinterfaceimpl"></bean> 




    <bean id="bookMasterInterface" class="com.book.bookDao.BookMasterInterfaceImpl"> 
     <property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /> 
    </bean> 
    <bean id="emailMasterInterface" class="com.book.bookDao.EmailMasterInterfaceImpl"> 
     <property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /> 
    </bean> 
    <bean id="languageMasterInterface" class="com.book.bookDao.LanguageMasterInterfaceImpl"> 
     <property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /> 
    </bean> 
    <bean id="autherMasterInterface" class="com.book.bookDao.AutherMasterInterfaceImpl"> 
     <property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /> 
    </bean> 



    <!-- Enabling transction managar --> 
    <tx:annotation-driven transaction-manager="transactionManager" /> 


    <!-- Config Tranaction Managar --> 
    <bean id="transactionManager" 
     class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /> 
    </bean> 


</beans> 

боб class1

@Entity 
@Table(name = "tbl_bookmaster", uniqueConstraints = { @UniqueConstraint(columnNames = "bid") }) 
public class BookMasterTable { 

    @Id 
    @GeneratedValue 
    @Column(name = "bid") 
    private int bookid; 

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

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

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

    @Column(name = "bestsaler") 
    private int bestsaller; 

    @ManyToOne 
    @JoinColumn(name = "lid") 
    private LanguageMasterTable languageMasterTable; 

    @ManyToOne 
    @JoinColumn(name = "auid") 
    private AutherMasterTable autherMasterTable; 

    @ManyToOne 
    @JoinColumn(name = "mailid") 
    private EmailMasterTable emailMasterTable; 


    // getter and setter 

    } 

bean2

@Entity 
@Table(name = "tbl_contactmaster") 
public class EmailMasterTable implements Serializable{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue 
    @OneToMany 
    @JoinColumn(name = "authercontactmail") 
    private Set<BookMasterTable> bookMasterTables; 

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

} 

боб 3

@Entity 
@Table(name = "tbl_authermaster") 
public class AutherMasterTable { 

    @Id 
    @GeneratedValue 
    @OneToMany 
    @JoinColumn(name = "auid") 
    private Set<BookMasterTable> bookMasterTables; 

    @Column(name = "authername") 
    private String authername; 
    // getter and setter 
} 

фасоли 4

public class LanguageMasterTable { 

    @Id 
    @GeneratedValue 
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
    @JoinColumn(name = "language") 
    private Set<BookMasterTable> bookMasterTables; 

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

    // getter and setter 
} 

Контроллер боба

@Controller 
public class BookMasterController { 

    @Autowired 
    private BookMasterServiceInterface bookMasterServiceInterfacecontroller; 


    @RequestMapping(value="/addbook",method= RequestMethod.POST) 
    public String addAuther(@ModelAttribute("book") BookMasterTable bookMasterTable){ 

     bookMasterServiceInterfacecontroller.addBook(bookMasterTable); 
     return "bookadded"; 
    } 
} 

как тот, имеющий все контроллер для каждого класса фасоли

сервисный интерфейс

public interface BookMasterServiceInterface { 
    public void addBook(BookMasterTable bookMasterTable); 
} 

службы Calss

@Service 
public class BookMasterServiceInterfaceImpl implements BookMasterServiceInterface{ 
    @Autowired 
    private BookMasterInterface bookMasterInterface; 

    @Override 
    @Transactional 
    public void addBook(BookMasterTable bookMasterTable) { 
     // TODO Auto-generated method stub 
     bookMasterInterface.addBooks(bookMasterTable); 

    } 
} 

как тот, имеющий сервис для все боба

интерфейса класса Repository

public interface BookMasterInterface { 
    public void addBooks(BookMasterTable bookMasterTable); 
} 

реализация класса хранилища, имеющего для каждого бина

@Repository 
public class BookMasterInterfaceImpl implements BookMasterInterface { 
    @Autowired 
    private SessionFactory sessionFactory; 

    @Override 
    public void addBooks(BookMasterTable bookMasterTable) { 
     // TODO Auto-generated method stub 

     try { 
      sessionFactory.getCurrentSession().save(bookMasterTable); 
     } catch (Exception e) { 
      // TODO: handle exception 
      e.printStackTrace(); 
     } 
    } 

} 

и каких ошибок я получаю.

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.book.service.BookMasterServiceInterface com.book.controller.BookMasterController.bookMasterServiceInterfacecontroller; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bookMasterServiceInterfacecontroller': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.book.bookDao.BookMasterInterface com.book.service.BookMasterServiceInterfaceImpl.bookMasterInterface; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bookMasterInterface': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.book.bookDao.BookMasterInterfaceImpl.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/BookServletmvc-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:517) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286) 
    ... 20 more 

Главное, что это не позволяет создавать, потому что он получает нулевой указатель, но я не знаю, где именно.

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/BookServletmvc-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:912) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:855) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489) 
    ... 48 more 
Caused by: java.lang.NullPointerException 
    at org.hibernate.cfg.Ejb3JoinColumn.checkReferencedColumnsType(Ejb3JoinColumn.java:538) 
    at org.hibernate.cfg.BinderHelper.createSyntheticPropertyReference(BinderHelper.java:126) 
    at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:116) 
    at org.hibernate.cfg.Configuration.processEndOfQueue(Configuration.java:1514) 
    at org.hibernate.cfg.Configuration.processFkSecondPassInOrder(Configuration.java:1437) 
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1355) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1724) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1775) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:247) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:373) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:358) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509) 
    ... 58 more 

я буду рад, если и может помочь :)

У меня есть четыре сущности. Первый

@Entity 
@Table(name = "tbl_bookmaster", uniqueConstraints = { @UniqueConstraint(columnNames = "bid") }) 
public class BookMasterTable { 

    @Id 
    @GeneratedValue 
    @Column(name = "bid") 
    private int bookid; 

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

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

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

    @Column(name = "bestsaler") 
    private int bestsaller; 

    @ManyToOne 
    @JoinColumn(name = "lid") 
    private LanguageMasterTable languageMasterTable; 

    @ManyToOne 
    @JoinColumn(name = "auid") 
    private AutherMasterTable autherMasterTable; 

    @ManyToOne 
    @JoinColumn(name = "mailid") 
    private EmailMasterTable emailMasterTable; 

    public int getBookid() { 
     return bookid; 
    } 

    public void setBookid(int bookid) { 
     this.bookid = bookid; 
    } 

    public String getBookname() { 
     return bookname; 
    } 

    public void setBookname(String bookname) { 
     this.bookname = bookname; 
    } 

    public String getBooktype() { 
     return booktype; 
    } 

    public void setBooktype(String booktype) { 
     this.booktype = booktype; 
    } 

    public String getBookprice() { 
     return bookprice; 
    } 

    public void setBookprice(String bookprice) { 
     this.bookprice = bookprice; 
    } 

    public int getBestsaller() { 
     return bestsaller; 
    } 

    public void setBestsaller(int bestsaller) { 
     this.bestsaller = bestsaller; 
    } 

    public LanguageMasterTable getLanguageMasterTable() { 
     return languageMasterTable; 
    } 

    public void setLanguageMasterTable(LanguageMasterTable languageMasterTable) { 
     this.languageMasterTable = languageMasterTable; 
    } 

    public AutherMasterTable getAutherMasterTable() { 
     return autherMasterTable; 
    } 

    public void setAutherMasterTable(AutherMasterTable autherMasterTable) { 
     this.autherMasterTable = autherMasterTable; 
    } 

    public EmailMasterTable getEmailMasterTable() { 
     return emailMasterTable; 
    } 

    public void setEmailMasterTable(EmailMasterTable emailMasterTable) { 
     this.emailMasterTable = emailMasterTable; 
    } 

} 
+0

Опубликовать свое лицо –

+0

Сущность не проблема, я все еще могу ее опубликовать. У меня есть три объекта. –

+0

У вас есть проблема где-то еще, что вы опубликовали, не имеет значения. –

ответ

0

Я думаю, что проблема здесь, в AutherMasterTable (и других подобных местах в других организациях):

@Id 
@GeneratedValue 
@OneToMany 
@JoinColumn(name = "auid") 
private Set<BookMasterTable> bookMasterTables; 

Для один-ко-многим присоединиться, колонка присоединиться упоминается в JoinColumn annotation в другой таблице , Он не относится к столбцу в этой таблице. Кроме того, Set не может быть идентификатором.

Попробуйте использовать два поля вместо:

@Id 
@GeneratedValue 
@Column(name = "auid") 
private int autherId; 

@OneToMany 
@JoinColumn(name = "auid") 
private Set<BookMasterTable> bookMasterTables; 

Обратите внимание, что мы не определяем ту же колонку дважды в одной и той же таблицы: первое упоминание о auid выше относится к колонке в tbl_authermaster и второй один относится к столбец auid в tbl_bookmaster.

Несмотря на вашу ошибку, Hibernate не должен бросать на вас исключение NullPointerException. Это ошибка в Hibernate.

+0

позвольте мне попробовать. –

+0

Я получаю эту ошибку сейчас. Причина: org.hibernate.HibernateException: Соединение не может быть пустым, когда «hibernate.dialect» не установлен –

+0

Да, его истинная и другая вещь, которую я решил. –

0

Чтение StackTrace, вы знаете, где:

java.lang.NullPointerException 
    at org.hibernate.cfg.Ejb3JoinColumn.checkReferencedColumnsType(Ejb3JoinColumn.java:538) 
    at ... 

Вы должны работать в отладке с точки останова на этой линии, но я думаю, что в принципе означает, что у Вас есть ошибка в вашей сущности, вашего отображения или в базе данных, на которой он запущен. Если это возможно, вы должны сгенерировать схему с помощью Hibernate, тогда вам следует сравнить разницу между вашей целевой схемой и сгенерированной схемой =>, которая будет печатать ошибку сопоставления.

Также нет mappedBy на вашем OneToMany и ManyToOne. Сначала вы должны проверить это (это не ошибка, чтобы не иметь их, но это может стать проблемой, если схема базы данных не синхронизирована с ожидаемой схемой Hibernate).

Смежные вопросы

 Смежные вопросы