2006-12-10

确实不爽

今天真是郁闷,每次都试不好,唉,话不多说,把代码帖出来吧

java 代码
  1. package com.foshanshop.ejb3.bean;   
  2. import java.io.Serializable;   
  3. import java.util.HashSet;   
  4. import java.util.Date;   
  5. import java.util.Set;   
  6.   
  7. import javax.persistence.CascadeType;   
  8. import javax.persistence.Entity;   
  9. import javax.persistence.FetchType;   
  10. import javax.persistence.GeneratedValue;   
  11. import javax.persistence.Id;   
  12. import javax.persistence.OneToMany;   
  13. import javax.persistence.OrderBy;   
  14. import javax.persistence.Table;   
  15.   
  16.   
  17. @SuppressWarnings("serial")   
  18. @Entity  
  19. @Table(name = "Orders")   
  20. public class Order implements Serializable {   
  21.     private Integer orderid;   
  22.     private Float amount;   
  23.     private Set<OrderItem> orderItems = new HashSet<OrderItem>();   
  24.     private Date createdate;   
  25.     @Id  
  26.     @GeneratedValue     
  27.     public Integer getOrderid() {   
  28.         return orderid;   
  29.     }   
  30.     public void setOrderid(Integer orderid) {   
  31.         this.orderid = orderid;   
  32.     }   
  33.        
  34.     public Float getAmount() {   
  35.         return amount;   
  36.     }       
  37.     public void setAmount(Float amount) {   
  38.         this.amount = amount;   
  39.     }   
  40.        
  41.     @OneToMany(mappedBy="order",cascade = CascadeType.ALL, fetch = FetchType.LAZY)   
  42.     @OrderBy(value = "id ASC")   
  43.     public Set<OrderItem> getOrderItems() {   
  44.         return orderItems;   
  45.     }   
  46.     public void setOrderItems(Set<OrderItem> orderItems) {   
  47.         this.orderItems = orderItems;   
  48.     }   
  49.        
  50.     public Date getCreatedate() {   
  51.         return createdate;   
  52.     }   
  53.     public void setCreatedate(Date createdate) {   
  54.         this.createdate = createdate;   
  55.     }   
  56.        
  57.     public void addOrderItem(OrderItem orderitem) {   
  58.        if (!this.orderItems.contains(orderitem)) {   
  59.             this.orderItems.add(orderitem);   
  60.             orderitem.setOrder(this);   
  61.        }   
  62.     }   
  63.   
  64.     public void removeOrderItem(OrderItem orderitem) {   
  65.         orderitem.setOrder(null);   
  66.         this.orderItems.remove(orderitem);   
  67.     }      
  68. }   

这代码是我原封不动的拷过来的,可是我这里就是运行不了,异常为

org.hibernate.MappingException: Could not determine type for: java.util.Set, for columns: [org.hibernate.mapping.Column(orderItems)]
说是找不到Set类型的列,建不了这个列,当时我刚看到这段代码时候,也很纳闷,这里有一个Set成员变量,那Set怎么表现为数据库中的列呢?难道它不会生成这列?,运行后发现确实没有生成这列,但是却抛出了一个异常,抛出这个异常的结果就是我的这个DAO没有绑定到JNDI中去,最后就找不到我这个DAO了.

难道原例子能实现,废话,当然能实现,不实现别人会放到网上去吗?

可是我这里为什么不能实现呢,它能帮我把两个表都建好了,并且外键对应主键的约束都帮我建好了,为什么却会出这等错误呢.

留着,以后解决.太不爽了.

评论
sgwood 2008-03-07
我的问题解决了,是因为我在category方少了个@OneToMany对应的Set<News> news映射...
错误相同.OrderItem应该也要加@ManyToOne
wancyang 2007-03-26
请问你解决了没有?我也遇到了这个问题
wtb 2007-02-13
你这是建的双向1:N关系吧。这个set是不会生成列的。实际上它会在orderitem表中建一个列叫order,存储它所属的order记录的ID号。
在OrderItems实体中添加:
private Order order;

@MantyToOne
public Order getOrder()
{
return order;
}
.....
lbfhappy 2006-12-11
不知道谁能帮我一下
发表评论

您还没有登录,请登录后发表评论

lbfhappy
搜索本博客
最近加入圈子
存档
最新评论