日期:2014-05-20  浏览次数:20848 次

JPA 单向一对多关联 中间表生成唯一索引问题
目前的需求是这样的:
有A、B两个实体,A对B形成一对多的关联关系,目前我只需要配置单向一对多关联,即只在A中配置一对多,B中不做任何配置,具体如下:
Java code

public class A implements Serializable {
    private static final long serialVersionUID = -1317006094950982121L;
    //其余属性及get、set方法省略
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @OneToMany (cascade = {CascadeType.REFRESH, CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE}, fetch=FetchType.LAZY)
    private List<B> b = new ArrayList<B>();
}

public class B implements Serializable {
    private static final long serialVersionUID = -1317006094950982121L;
    //其余属性及get、set方法省略
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    //注:A中单向一对多配置,B中不配置A属性
}




如果像上述配置的话,因为未在B中进行关联配置,这样会生成一个中间表A_B来维护关联关系,A_B中除了已生成必要的外键索引外,还对B_ID字段生成了一个唯一索引,这是不应该的,因为A_B中肯定会有重复记录。

请问:通过A中加什么注解,才能在生成表的同时不生成唯一索引?请各位赐教!!!(认为我表述不清楚的可以纠正)

------解决方案--------------------
去除"@Id"不行么?
------解决方案--------------------
有索引难道对你的业务有影响?
------解决方案--------------------
对阿

有索引 难道不可以吗
------解决方案--------------------
这是a_b产生的问题,还是需要在b中配置关联。。。
------解决方案--------------------
A_ID B_ID
----------------------
1 3
2 3

 你这个是一张中间表吗?
------解决方案--------------------
大哥,如果你在A中配一对多的话,说明A的ID在B中也是存在的。
即A中如果有一个ID=1
B中会一条或多条数据如1,4;1,5;……这才叫一对多 怎么会出来一个中间表