我有一个 HQL 类的 3 个表的查询。有一些一对多的关系。
我的数据库或每个实体类都没有问题..
我有一些类hibernate DAO那个查询,除了这个之外一切都很好..
jasperreport 的类 reportserviceimpl,
我有这样的错误
线程“AWT-EventQueue-0”org.hibernate.hql.ast.QuerySyntaxException 中的异常:意外令牌:ase 靠近第 1 行,第 84 列 [选择 s.product.name 作为 productName,sum(s.quantity) 作为数量,s .sales.noTable 作为 noTable,s.sales.member 作为成员,s.price 作为价格,sum(s.subtotal) 作为来自 restodeskapp.model.SalesDetail s 的 subTotal,其中 s.sales.id = :id group by s.product .name order by s.product.name] at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31) at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24) at org .hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59) 在 org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:258) 在 org.hibernate.hql.ast.QueryTranslatorImpl。doCompile(QueryTranslatorImpl.java:157) 在 org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111) 在 org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:77) 在 org.hibernate。 engine.query.HQLQueryPlan.(HQLQueryPlan.java:56)
这是我的 HBL 代码
List<SalesReport> salesReports =
sessionFactory.getCurrentSession()
.createQuery("select s.product.name as productName,"
+ " sum(s.quantity) as quantity,"
+ " s.sales.noTable as noTable,"
+ " s.sales.member as member,"
+ " s.price as price,"
+ " sum(s.subtotal) as subTotal from SalesDetail s "
+ " where s.sales.id = :id "
+ " group by s.product.name order by s.product.name")
.setParameter("id", id)
.setResultTransformer(
Transformers.aliasToBean(SalesReport.class))
.list();
这是我的销售报告
public class SalesReport {
private String productName;
private String member;
private int noTable;
private Long quantity;
private BigDecimal subTotal;
private BigDecimal price;
//setter getter
}
这里是我的销售
public class Sales implements Serializable{
@Id @GeneratedValue
@Column(name="ID")
private Long id;
@Column(name="NO_TABLE", nullable=false)
private int noTable;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="SALES_DATE",nullable=false)
private Date salesDate;
@OneToMany(mappedBy="sales",cascade=CascadeType.ALL)
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private List<SalesDetail> salesDetails;
@Column(name="TOTAL_SALES",precision=18,scale=0,nullable=false)
private BigDecimal totalSales;
@ManyToOne
@JoinColumn(name="Member_ID")
private Member member;
//setter getter
}
这是我的销售详情
public class SalesDetail implements Serializable{
@Id @GeneratedValue
@Column(name="ID")
private Long id;
@ManyToOne
@JoinColumn(name="PRODUCT_ID",nullable=false)
private Product product;
@Column(name="QUANTITY",nullable=false)
private Integer quantity;
@Column(name="PRICE",nullable=false,precision=18,scale=0)
private BigDecimal price;
@Column(name="SUBTOTAL",nullable=false,precision=18,scale=0)
private BigDecimal subtotal = BigDecimal.ZERO;
@ManyToOne
@JoinColumn(name="SALES_ID",nullable=false)
private Sales sales;
}
这是我的产品
public class Product implements Serializable {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="ID")
private Long id;
@Column(name="NAME",unique=true,length=200)
private String name;
@Column(name="DESCRIPTION",unique=false,length=500)
private String description;
@Column(name="PRICE",unique=false,length=200)
private BigDecimal harga;
@Column(name="note",unique=false,length=500)
private String note;
@Enumerated(EnumType.STRING)
@Column(name="STATUS",length=20)
private EnumStatus status;
@Enumerated(EnumType.STRING)
@Column(name="TYPE",length=20)
private EnumJenisMakanan type;
@Lob
@Column(name="PICTURE")
private byte[] picture;
}
我真的不知道哪里错了..请帮忙..
谢谢你..最好的问候:)