zoukankan      html  css  js  c++  java
  • 单向一对多关系

    /**
     * 关系被维护端
     * @author Administrator
     *
     */
    @Entity
    @Table(name="orders")
    public class Order {
     private String orderid;
     private Float amount;
     private Set<OrderItem> orderitem=new HashSet<OrderItem>();
     
     @Id
     public String getOrderid() {
      return orderid;
     }
    
     @Column(nullable=false)
     public Float getAmount() {
      return amount;
     }
     public void setAmount(Float amount) {
      this.amount = amount;
     }
     /**
      * 在关系维护中,多的一方为关系维护端,关系维护端负责外键记录的更新。关系被维护端则没有权利更新外键
      * 的记录。
      * @return
      */
     //当注解以Many结尾时且需要关系维护,那么fetch的默认值为延迟加载;为One时,默认为立即加载。
     //mappedBy(与hibernate中的inverse意思相同,表示对方,所以mappedBy出现在关系被维护端)出现在关系被维护端中,表示关系被维护端在关系维护端中的属性。
     @OneToMany(cascade={CascadeType.ALL},fetch=FetchType.LAZY,mappedBy="order")
     public Set<OrderItem> getOrderitem() {
      return orderitem;
     }
     
     
     public void setOrderitem(Set<OrderItem> orderitem) {
      this.orderitem = orderitem;
     }
     /**
      * 添加订单项  由于Order是关系被维护端,因此不能更新外键的,外键维护必须是OrderItem
      * @param orderItem
      */
     public void addOrderItem(OrderItem orderItem){
      orderItem.setOrder(this); //一定要有这条语句,它是维护外键。
      orderitem.add(orderItem);
     }
    
    }
    
     
    
    @Entity
    public class OrderItem {
     private Integer id;
     private String productname;
     private Float price=0f;
     private Order order;
     /**
      * optional表示是否可选,如果为true,则为可选就是可以为null。如果为false,则为不可选就是不能为空
      * @JoinColumn(name="order_id"):表示外键的注解,name属性表示外键的名称
      */
     @ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH},optional=false)
     @JoinColumn(name="order_id")
     public Order getOrder() {
      return order;
     }
     @Id @GeneratedValue
     public Integer getId() {
      return id;
     }
    
     @Column(length=40,nullable=false)
     public String getProductname() {
      return productname;
     }
     @Column(nullable=false)
     public Float getPrice() {
      return price;
     }
    }
  • 相关阅读:
    项目
    关于我
    【转载】罗胖精选|什么样的自控方法才有效?
    知识管理——得到CEO脱不花女士的一次分享
    注意由双大括号匿名类引起的serialVersionUID编译告警
    持续集成、持续交付和持续部署
    Google Cayley图数据库使用方法
    任务的属性
    团队博客地址
    个人总结
  • 原文地址:https://www.cnblogs.com/lbangel/p/3022778.html
Copyright © 2011-2022 走看看