Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 为什么在JPA中,与实体一起抛出的QuerySyntaxException未映射到[来自实体]?_Spring_Hibernate_Jpa - Fatal编程技术网

Spring 为什么在JPA中,与实体一起抛出的QuerySyntaxException未映射到[来自实体]?

Spring 为什么在JPA中,与实体一起抛出的QuerySyntaxException未映射到[来自实体]?,spring,hibernate,jpa,Spring,Hibernate,Jpa,我当时正在从事一个利用SpringMVC和JPA的web项目,它是使用MAVEN构建的。不知何故,我不确定我是否正确地完成了JPA配置,因为我在启动web时遇到了这个错误 原因:org.hibernate.hql.internal.ast.QuerySyntaxException:用户未映射[来自用户] 我在MYSQL中以这种方式创建了表: mysql> desc users; +----------+-------------+------+-----+---------+------

我当时正在从事一个利用SpringMVC和JPA的web项目,它是使用MAVEN构建的。不知何故,我不确定我是否正确地完成了JPA配置,因为我在启动web时遇到了这个错误

原因:org.hibernate.hql.internal.ast.QuerySyntaxException:用户未映射[来自用户]

我在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;
我让用户实体以这种方式声明:

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");
      ...
   }
}
@存储库
公共类UserDao实现了IUserDao{
@持久性单位
私人实体管理工厂emf;
公共用户findByUsername(字符串用户名){
List l=(List)emf.createEntityManager().createQuery(“来自用户”);
...
}
}

packagesToScan
需要一个包名列表
org.huahsin.ProjectA.*
不是有效的包名称。确保在此属性中指定实体的包(或任何超级包)