1

私はJPAを初めて使用するので、小さなアプリケーションを作成しました。そして私のアプリには、次のような@Queryがあります。

@Query("select a from T_RBM_OPSCREENS_APPLICATIONS a, T_SCR_APPS_OPS_ROLES b where a.id=b.app_id and b.role_id=?1")

アプリケーションの実行を開始すると、次のエラーが発生します。

原因:org.hibernate.hql.internal.ast.QuerySyntaxException:T_RBM_OPSCREENS_APPLICATIONSがマップされていません[T_RBM_OPSCREENS_APPLICATIONS a、T_SCR_APPS_OPS_ROLES bからaを選択してください。ここで、a.id =b.app_idおよびb.role_id=?1] .internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180)at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)at org.hibernate.hql.internal.ast .tree.FromClause.addFromElement(FromClause.java:93)at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:324)at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(Hql .java:3270)切り捨てられました。完全なスタックトレースについては、ログファイルを参照してください

しかし、私は次のようにマッピングを行いました:

    @Entity
    @Table(name = "T_RBM_OPSCREENS_APPLICATIONS", schema = "RBMCORE")
    public class Application implements Serializable{

        @Id

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

        @Column(name = "s_appname", unique = true, nullable = false)
        private String name;
.
.
.

私は何が欠けていますか?

ありがとう

4

1 に答える 1

4

JPQL / HQLクエリは、エンティティとその永続的なフィールド/プロパティ/関連付けを使用します。テーブルと列は使用しません。

クエリは次のようになります。

select a from Application a inner join a.roles role where role.id = ?1

ドキュメントを読んでください。

于 2013-01-04T09:20:26.107 に答える