2015-04-09 5 views
0

Использование Spring 4.1.1.RELEASE с Hibernate 4.3.5. Изначально, когда я пытаюсь установить связь между объектами, простейшие из них не справляются с этой ошибкой:Spring 4 + Hibernate 4 + Maven: не удалось определить тип

не удалось определить тип для: com.mobistech.drc.m2mproject.pojo.Test2, за столом: Test1, для столбцов: [org.hibernate.mapping.Column (test2)]

Вот классы:

Test1.java

package com.mobistech.drc.m2mproject.pojo; 

    import javax.persistence.Entity; 
    import javax.persistence.GeneratedValue; 
    import javax.persistence.Id; 
    import javax.persistence.JoinColumn; 


    @Entity 
    public class Test1 { 

     private int id; 

     private Test2 test2; 

     @Id 
     @GeneratedValue 
     public int getId() { 
      return id; 
     } 

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


     @JoinColumn(name = "id") 
     public Test2 getTest2() { 
      return test2; 
     } 

     public void setTest2(Test2 test2) { 
      this.test2 = test2; 
     } 
    } 

Test2.java

package com.mobistech.drc.m2mproject.pojo; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 

@Entity 
public class Test2 { 

    private int id; 


    @Id 
    @GeneratedValue 
    public int getId() { 
     return id; 
    } 

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


} 

Я уже пытался двигаться аннотаций к началу свойств ... Это не сработало ...

Вот являются зависимостями Maven

<dependencies> 
    <!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${org.springframework-version}</version> 
     <exclusions> 
      <!-- Exclude Commons Logging in favor of SLF4j --> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${org.springframework-version}</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 


    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 


    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.5.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>taglibs</groupId> 
     <artifactId>standard</artifactId> 
     <version>1.1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-dbcp2</artifactId> 
     <version>2.0</version> 
    </dependency> 

    <!-- MySQL --> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.6</version> 
    </dependency> 


    <!-- Test --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.7</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

** EDIT ** Конфигурация:

<context:component-scan base-package="com.mobistech.drc.m2mproject" /> 


<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" 
    destroy-method="close"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" value="jdbc:mysql://localhost:3306/drc" /> 
    <property name="username" value="root" /> 
    <property name="password" value="blabla" /> 
</bean> 


<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="annotatedClasses"> 
     <list> 

      <value>com.mobistech.drc.m2mproject.pojo.Test1</value> 
      <value>com.mobistech.drc.m2mproject.pojo.Test2</value> 

     </list> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">create-drop</prop> 
    </props> 
    </property> 
</bean> 

<tx:annotation-driven transaction-manager="transactionManager" /> 
<bean id="transactionManager" 
    class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 
+0

Сообщение конфигурации. Вам также понадобится '@ OneToOne' или' @ ManyToOne' вместо (или рядом) '@ JoinColumn'. –

+0

Что делать, если Test2 не должен знать Test1? – paroxit

+0

Зачем это так, вы можете иметь совершенно однонаправленные отношения с '@ ManyToOne' ... –

ответ

0

@JoinColumn(name = "test2_id", referencedColumnName = "id")

Ваше присоединиться определение столбца должно быть как выше ... также вы должны объявить @OneToOne соотношению

+0

не работает. даже если я удалю @Join – paroxit

+0

, вы добавили аннотацию отношения? @paroxit – sgpalit

+0

Я этого не сделал. Я новичок в java. Спасибо ... Я думал, что спящий режим может отображать между этими двумя объектами, если бы я не объявлял его с момента его просто-напросто ... – paroxit

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