2013-11-02 41 views
1

我正在研究一個使用Spring MVC和JPA的Web項目,它使用MAVEN構建。不知怎的,我不知道是否我已經JPA配置做得正確,因爲我得到這個錯誤,而開展網絡爲什麼在實體中拋出的QuerySyntaxException未映射[來自實體]發生在JPA中?

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped [from User]

我在MYSQL表以這種方式創建:

mysql> desc users; 

+----------+-------------+------+-----+---------+-------+ 
| Field | Type  | Null | Key | Default | Extra | 
+----------+-------------+------+-----+---------+-------+ 
| username | varchar(10) | NO | PRI |   |  | 
| password | varchar(32) | YES |  | NULL |  | 
| enabled | int(11)  | YES |  | NULL |  | 
+----------+-------------+------+-----+---------+-------+ 
3 rows in set (0.00 sec) 

我有用戶實體聲明中這樣說:

@Entity 
@Table(name="users") 
public class User { 
    @Id 
    @Column(name="username") 
    private String username; 

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

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

我有這樣的配置datasource.xml

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://localhost:3306/test"/> 
    <property name="username" value="root"/> 
    <property name="password" value="root"/> 
</bean> 

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter" /> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="packagesToScan" value="org.huahsin.ProjectA.*" /> 
</bean> 

<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
    <property name="databasePlatform" value="org.hibernate.dialect.MySQLInnoDBDialect" /> 
    <property name="showSql" value="true" /> 
</bean> 

這是DAO將如何調用持久性對象:

@Repository 
public class UserDao implements IUserDao { 

    @PersistenceUnit 
    private EntityManagerFactory emf; 

    public User findByUsername(String username) { 

     List<User> l = (List<User>) emf.createEntityManager().createQuery("from User"); 
     ... 
    } 
} 

回答

3

packagesToScan預計包名稱的列表。 org.huahsin.ProjectA.*不是有效的軟件包名稱。確保在此屬性中指定實體的包(或任何超級包)。