引起:org.hibernate.QueryException:无法解析属性:

时间:2015-07-04 18:26:28

标签: java hibernate jpa

我收到此错误的原因很奇怪。我将解释错误是按时间顺序排列,以便更容易理解。

这是我的JPA查询,它在我添加po.customer_id之前一直很完美。

@Query("SELECT NEW com.htd.domain.ShopOrder(po.id, po.po_number, "
            + "po.due_date, po.customer_id, po_part.id,po_part.part_quantity, "
            + "part.id, part.part_number, part.part_description, "
            + "part.plasma_hrs_per_part, part.grind_hrs_per_part, "
            + "part.mill_hrs_per_part, part.brakepress_hrs_per_part) "
            + "FROM Po po "
            + "JOIN po.partList po_part "
            + "JOIN po_part.part part "
            + "where po.id = ?1")
    List<ShopOrder> getShopOrder(Long id);

ShopOrder构造函数

 public ShopOrder(long po_id, String po_number, LocalDate po_due_date, BigInteger customer_id,
                     long po_part_id, int part_quantity, long part_id,
                     String part_number, String part_decription, BigDecimal plasma_hrs,
                     BigDecimal grind_hours, BigDecimal mill_hrs,
                     BigDecimal breakpress_hrs) {

        this.po_id = po_id;
        this.po_number = po_number;
        this.po_due_date = po_due_date;
        this.po_part_id = po_part_id;
        this.part_quantity = part_quantity;
        this.part_id = part_id;
        this.part_number = part_number;
        this.part_decription = part_decription;
        this.plasma_hrs = plasma_hrs;
        this.grind_hours = grind_hours;
        this.mill_hrs = mill_hrs;
        this.breakpress_hrs = breakpress_hrs;
        this.customer_id = customer_id;

    }

数据库表的图片 T_PO

错误:

Caused by: org.hibernate.QueryException: could not resolve property: customer_id of: com.htd.domain.Po
    at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:83)
    at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:77)
    at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1978)
    at org.hibernate.hql.internal.ast.tree.FromElementType.getPropertyType(FromElementType.java:367)
    at org.hibernate.hql.internal.ast.tree.FromElement.getPropertyType(FromElement.java:500)
    at org.hibernate.hql.internal.ast.tree.DotNode.getDataType(DotNode.java:652)
    at org.hibernate.hql.internal.ast.tree.DotNode.prepareLhs(DotNode.java:275)
    at org.hibernate.hql.internal.ast.tree.DotNode.resolve(DotNode.java:219)
    at org.hibernate.hql.internal.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:126)
    at org.hibernate.hql.internal.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:121)
    at org.hibernate.hql.internal.ast.tree.DotNode.resolveSelectExpression(DotNode.java:714)
    at org.hibernate.hql.internal.ast.HqlSqlWalker.resolveSelectExpression(HqlSqlWalker.java:958)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:2257)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.constructor(HqlSqlBaseWalker.java:2607)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:2324)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:2194)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1476)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:573)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:249)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206)
    ... 54 more

我对为什么我正在调用的表中的列无法识别而感到困惑。我玩了一段时间,但感觉就像是在追我的尾巴。

------- ------- UPDATE

 public ShopOrder(long po_id, String po_number, LocalDate po_due_date, long customer_id,
                     long po_part_id, int part_quantity, long part_id,
                     String part_number, String part_decription, BigDecimal plasma_hrs,
                     BigDecimal grind_hours, BigDecimal mill_hrs,
                     BigDecimal breakpress_hrs) {

我注意到我的其他变量在我的表中是BigInt在我的构造函数中是Long。因此我将customer_id更改为Long,但我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:1)

您的实体(customer_id类)中没有Po属性。 你应该有这样的东西:

@Entity
public class Po {
    // ...

    @Basic
    long customer_id;

    // ...
}