0

私はエンティティを持っています:

@Entity(name = "target_group")
public class TargetGroup extends AbstractEntity {
    private String name;
    private String description;
    @ManyToMany(fetch = FetchType.LAZY)
    private List<Customer> customers = new ArrayList<>();
    getter.setter...
}

そして、stableId(抽象クラ​​スにある)グループに関するリストを取得するためのコードがあります:

public TargetGroup getTargetGroupByStableId(String stableId) {
    TargetGroup tg = null;
    try {
        Query q = em.createQuery("SELECT tg FROM TargetGroup tg WHERE tg.stableId = :stableId");
        q.setParameter("stableId", stableId);
        tg = (TargetGroup) q.getSingleResult();
        logger.debug("TargetGroup reached: "+tg.generalInfo());
    } catch(Exception e) {
        logger.error("Error in getting TargetGroup by stableId:"+stableId,e);
        throw e;
    }
    return tg;
}

そして、私はこのエラーが発生しています:

SEVERE: Error in getting TargetGroup by stableId:51a7b93f-a342-44ec-9849-cd1688102f65
java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: TargetGroup is not mapped [SELECT tg FROM TargetGroup tg WHERE tg.stableId = :stableId]

何故ですか?コードの何を変更すればよいですか? ありがとうございました!

4

2 に答える 2

1

この注釈@Entity(name = "target_group")を使用して、クエリでエンティティを参照するために使用されるデフォルト値 (クラスの名前) の名前を変更します (ここを参照として参照してください)。クラスの完全修飾名は、通常どおり、あいまいさが存在する場合にのみ必要です。

于 2013-10-22T16:09:04.627 に答える
0

この 2 つの SELECT は正常に機能しました。

  1. マップされた名前で

    クエリ q = em.createQuery("SELECT tg FROM target_group tg WHERE tg.stableId = :stableId");

  2. 完全修飾名:

    クエリ q = em.createQuery("SELECT tg FROM com.my_organisation.full.path.to.TargetGroup tg WHERE tg.stableId = :stableId");

于 2013-10-22T12:26:26.927 に答える