2012-10-09 4 views
2

나는이 내 spring.xml에서 잘 작동 다음 코드 ...봄 최대 절전 모드 오류

<beans:bean id="sessionFactory" 
     class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <beans:property name="annotatedClasses"> 
      <beans:list> 
       <beans:value>org.assessme.com.entity.User</beans:value> 
      </beans:list> 
     </beans:property> 
     <beans:property name="dataSource" ref="dataSource" /> 
       <beans:property name="packagesToScan" 
     value="org.assessme.com.entity.*" /> 
     <beans:property name="hibernateProperties"> 
      <beans:props> 
       <beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect 
       </beans:prop> 
       <beans:prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory 
       </beans:prop> 
       <beans:prop key="hibernate.show_sql">true</beans:prop> 
       <beans:prop key="hibernate.hbm2ddl.auto">update</beans:prop> 
      </beans:props> 
     </beans:property> 
    </beans:bean> 

I 만 가지고는 콩에서 볼 수있는 첫 번째 작업 사용자 개체 : 목록.

entities

내가 같은이 목록에 다른 클래스를 추가 할 때 문제는, 아래 그림과 같이

내 모든 실체는 ..., 같은 폴더에

org.assessme 있습니다 .com.entity.Campaign

내가 Tomcat을 시작할 때 나는 ... 다음과 같은 예외를 얻을

Caused by: org.hibernate.AnnotationException: No identifier specified for entity: org.assessme.com.entity.Campaign 
    at org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:272) 
    at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:227) 
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:712) 
    at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:636) 
    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:359) 
    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1206) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:717) 
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) 
    ... 132 more 
,536,913,632 필요한 경우 아래의 10

엔티티 코드 ...

Campaign.java

package org.assessme.com.entity; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Table; 

@Entity 
@Table(name = "campaigns") 
public class Campaign { 

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

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

    public String getName() { 
     return name; 
    } 

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

    public String getId() { 
     return id; 
    } 

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

User.java는

package org.assessme.com.entity; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 

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

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

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

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

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

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

    @Column(name = "access") 
    private Integer access; 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(name = "id") 
    private long id; 


    public String getFirstName() { 
     return firstName; 
    } 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 
    public String getLastName() { 
     return lastName; 
    } 
    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
    public String getEmail() { 
     return email; 
    } 
    public void setEmail(String email) { 
     this.email = email; 
    } 
    public long getId() { 
     return id; 
    } 
    public void setId(long id) { 
     this.id = id; 
    } 
    public String getPassword() { 
     return password; 
    } 
    public void setPassword(String password) { 
     this.password = password; 
    } 
    public String getUsername() { 
     return username; 
    } 
    public void setUsername(String username) { 
     this.username = username; 
    } 
    public Integer getAccess() { 
     return access; 
    } 
    public void setAccess(Integer access) { 
     this.access = access; 
    } 
} 
+0

User \ Campaign beans에 대한 import 구문은 무엇입니까? –

+0

아, 기다려, 그들을 추가 할 것이다 – david99world

+6

'Campaign' 클래스는'@ Id' 어노테이션이있는 필드를 가지고 있지 않습니다. 당신이보고있는 에러는 당신이 Hibernate에게 그 테이블에 대한 PK가 무엇인지 말할 필요가 있다고 말하는 것입니다. –

답변

7

나는 문제가 Campaign가 주석이 속성이 없다는 생각 @Id. 다음과 같이 수정하십시오.

@Id 
@Column(name = "id") 
private String id; 
+0

완벽! 고맙습니다 – david99world

관련 문제