2018-4-16 日志记录(双向多对多)

今日工作:今日完成了Hibernate多对多的映射关系,从xml的配置到注解的配置,对单、双向的N-N

有了新的认识,特别是维护数据的时候,不能双方都维护,应该交给另一方维护,不然会数据冲突。

解决:在进行双向N-N的配置的时候,在配置

 @JoinTable( // 配置中间表的属性,表名和关联的两个实体的列明

              name="Catogory_Item",
               joinColumns=@JoinColumn(name="Category_ID"),
     inverseJoinColumns=@JoinColumn(name="Item_ID"))

的一方进行了,mappeBy的属性的配置,导致属性冲突,一直会提示出错。

解决问题:

/**
 * 分类信息
 * @author tianliangge
 *
 */
@Entity
public class Category {

     @Id
     @GenericGenerator(name="categoryId", strategy="native")
     @GeneratedValue(generator="categoryId")
     private Integer id;
     private String name;
     @ManyToMany // 特别注意的是:这里不能设置mappeBy的属性了,和JointTable发生冲突
                 // 在3.5版本以后,基本上不能共存了,需要在另一个表中设置反转的控制
     @JoinTable( // 配置中间表的属性,表名和关联的两个实体的列明

              name="Catogory_Item",
               joinColumns=@JoinColumn(name="Category_ID"),
     inverseJoinColumns=@JoinColumn(name="Item_ID"))
     private Set<Item> items = new HashSet<>();
     // getter、setter略  
}

/**
 * 项目
 * @author tianliangge
 *
 */
@Entity
public class Item {

     @Id
     @GenericGenerator(name="itemId", strategy="native")
     @GeneratedValue(generator="itemId")
     private Integer id;
     private String name;
     @ManyToMany(mappedBy="items") // 设置反转,自己放弃维护关系
     private Set<Category> categories = new HashSet<>();
    // getter、setter略  
}


特别注意:只能在没有@JoinTable注解的一方方进行MappedBy配置,否则会和@JoinTable冲突。


明日计划:明日进行仓库表的改进,开始把DAO层改成对Hibernate的支持。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值