2009-06-07 37 views

Trả lời

9

Tôi nghĩ bạn cũng có thể sử dụng phép chiếu SQL. Nó phải là một cái gì đó như:

session.createCriteria(Item.class) 
     .createAlias("item", "i") 
     .setProjection(Projections.projectionList() 
      .add(Projections.groupProperty("i.id")) 
      .add(Projections.groupProperty("i.price")) 
      .add(Projections.groupProperty("i.quantity")) 
      .add(Projections.sqlProjection( 
        "price * quantity as total", 
        new String[] { "total" }, 
        new Type[] { Hibernate.DOUBLE } 
       ) 
      ) 
     ); 

Ori

+0

Bạn có thể xin vui lòng cho biết nơi là chức năng mà tạo ra tổng số? Điều này chỉ tạo ra sản phẩm. – Victor

1

Nó không chính xác những gì bạn yêu cầu, nhưng bạn có thể sử dụng "tính chất có nguồn gốc" để có được một cái gì đó khá giống nhau.

Ví dụ, bạn có thể ánh xạ một tài sản totalPrice để một biểu thức SQL:

<property name="totalPrice" formula="quantity * price" type="big_decimal"/> 

Công thức SQL "số lượng * giá" được đánh giá mỗi khi đơn vị được lấy từ cơ sở dữ liệu.

Ori

Các Hibernate docs chứa biết thêm về việc này.

1

Không thể thực hiện điều đó với Tiêu chí. Nhưng HQL có thể hữu ích cho việc này.

SELECT ent.quantity*ent.price from EntityName as ent WHERE ent.id = ? 
Các vấn đề liên quan