2011-08-12 53 views
0

產品類別HibernateTemplate.find返回正確的行數,但具有相同數據

@Entity 
@Table (name="product") 

public class Productimplements Serializable { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    private Date date; 
    private String type; 
    private Integer ticket; 

    @Id 
    @Column (name="ticket") 
    public Integer getTicket() { 
     return ticket; 
    } 
    public void setTicket(Integer ticket) { 
     this.ticket = ticket; 
    } 


    @Column (name="date") 
    public Date getDate() { 
     return date; 
    } 
    public void setDate(Date date) { 
     this.date = date; 
    } 

    @Column (name="type") 
    public String getType() { 
     return type; 
    } 
    public void setType(String type) { 
     this.type = type; 
    } 
} 

查詢功能:

@SuppressWarnings("unchecked") 
    @Override 
    public List<Product> getProductByTicket(Integer ticket) { 
     Object [] params = new Object [] {ticket}; 
     String hql = "from Product as p where p.ticket = ?"; 

     List <Product> productList = hibernateTemplate.find(hql, params); 

     for (Product i: productList) { 
      System.out.printf ("DATE = %s TYPE = %s\n", i.getDate(), i.getType()); 
     } 
     return productList; 
    } 

在上面的函數,打印出是正確的數量行,但所有行都顯示第一行的數據。有任何想法嗎?

PS:使用Sybase

回答

2

ticket是產品實體的ID(即,主鍵)。數據庫中應該只有一個具有給定票證的產品。如果有多個,那麼你的映射或你的數據庫模型是錯誤的。

+0

我明白了。現在我刪除了@ID註釋,並且無法使用「無指定標識符」錯誤進行編譯。但是我的表格確實沒有主鍵。我該怎麼辦? – Jeremy

+0

Hibernate不支持沒有主鍵的表。定義主鍵列(序列號很好)。 –

+0

我沒有權限更改數據庫。我只需要做選擇,任何解決方法? – Jeremy

相關問題