问题描述
我最近在做项目的时候需要多对多映射,并且有一端还要维护集合顺序但是在save的时候<setname="busRouteSet"table="route_and_stop"><keycolumn="bus_stop_id"not-null="true"/><many-to-manyclass="BusRoute"column="bus_route_id"/></set><listname="stopSequence"table="route_and_stop"inverse="false"cascade="all"><keycolumn="bus_route_id"not-null="true"/><list-indexcolumn="bus_stop_index"/><many-to-manyclass="BusStop"column="bus_stop_id"/></list>2011-02-2613:07:38WARNJDBCExceptionReporter:77-SQLError:1364,SQLState:HY0002011-02-2613:07:38ERRORJDBCExceptionReporter:78-Field'bus_stop_index'doesn'thaveadefaultvalue2011-02-2613:07:38ERRORAbstractFlushingEventListener:301-CouldnotsynchronizedatabasestatewithsessionCausedby:java.sql.BatchUpdateException:Field'bus_stop_index'doesn'thaveadefaultvalue请教高手指点迷津~~~~
解决方案
解决方案二:
多对多一般情况有三张表,其中只生成两张表的实体的映射,其中中间表不需要进行映射,在存在的两张表中映射必须包含中间表的映射配置,如果你不明白配置可以使用Myeclipse中Hibernate映射自动完成映射,需要记住勾选多对多选项才能!!
解决方案三:
生成的第三张表结构,把index自动添加进去的+----------------+------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+----------------+------------+------+-----+---------+-------+|bus_route_id|bigint(20)|NO|PRI|NULL|||bus_stop_id|bigint(20)|NO|PRI|NULL|||bus_stop_index|int(11)|NO||NULL||+----------------+------------+------+-----+---------+-------+