JPA:命名查询中的错误

时间:2014-05-14 13:39:21

标签: java hibernate jpa named-query

我得到异常org.hibernate.HibernateException: Errors in named queries: ElaborazionePagamentiMaggioriOneri.estrai,但命名查询对我来说是正确的。我也得到了

org.hibernate.hql.ast.QuerySyntaxException: ElaborazionePagamentiMaggioriOneri is not mapped [FROM ElaborazionePagamentiMaggioriOneri e  WHERE e.dataInizioLancio IS NULL AND e.dataFineLancio IS NULL AND e.distinta IS NULL]

我的实体如下:

@Entity(name="ELABORAZIONE_PAGAMENTI")
@Table(name="ELABORAZIONE_PAGAMENTI")
@NamedQuery(name="ElaborazionePagamentiMaggioriOneri.estrai", 
query="FROM ElaborazionePagamentiMaggioriOneri e  WHERE e.dataInizioLancio IS NULL AND e.dataFineLancio IS NULL AND e.distinta IS NULL")
public class ElaborazionePagamentiMaggioriOneri {
    @Id
    @GeneratedValue
    @Column(name="ID_ELABORAZIONE")
    private long idElaborazione;

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="ID_INTERVALLO")
    private Intervallo intervallo;

    @Column(name="IMPORTO_MINIMO")
    private BigDecimal importoMinimo;

    @Column(name="IMPORTO_MASSIMO")
    private BigDecimal importoMassimo;

    @Column(name="LIMITE_DISPOSIZIONI")
    private Long limiteDisposizioni;

    @Column(name="DATA_INIZIO_LANCIO")
    private Calendar dataInizioLancio;

    @Column(name="DATA_FINE_LANCIO")
    private Calendar dataFineLancio;

    @OneToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="ID_DISTINTA")
    private DistintaMaggioriOneri distinta;

错误的起源是什么?我仔细检查了JPQL语法。

4 个答案:

答案 0 :(得分:10)

Entity name一起使用的

@Entity和您在Select查询中使用的实体的名称应该相同,如果您没有使用@Entity的实体名称,则应使用类名使用选择查询。检查一下。

答案 1 :(得分:3)

问题在于,如果您放置注释@Entity(name="ELABORAZIONE_PAGAMENTI"),则将实体名称设置为ELABORAZIONE_PAGAMENTI。 有两种解决方案:

  • 将指定的查询修改为FROM ELABORAZIONE_PAGAMENTI e WHERE e.dataInizioLancio IS NULL AND e.dataFineLancio IS NULL AND e.distinta IS NULL
  • 删除@Entity属性
  • ,修改name注释

答案 2 :(得分:2)

您的查询中缺少SELECT

query="SELECT e FROM ElaborazionePagamentiMaggioriOneri e  WHERE

答案 3 :(得分:1)

除了缺少SELECT之外,“未映射”错误可能是因为您没有在persistence.xml中注册该类。