目前的需求是这样的:
有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;……这才叫一对多 怎么会出来一个中间表