1

Spring MVC と JPA を使用する Web プロジェクトに取り組んでおり、MAVEN を使用してビルドしました。Webの起動中にこのエラーが発生するため、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)

User エンティティを次のように宣言しています。

@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");
      ...
   }
}
4

1 に答える 1

3

packagesToScanパッケージ名のリストが必要です。org.huahsin.ProjectA.*は有効なパッケージ名ではありません。このプロパティでエンティティのパッケージ (または任意のスーパー パッケージ) を指定してください。

于 2013-11-02T14:20:23.093 に答える