Java Hibernate manytone具有两个列

Java Hibernate manytone具有两个列,java,spring,hibernate,postgresql,Java,Spring,Hibernate,Postgresql,基本上,我想将起始城市和结束城市引用到海湾对象。已经创建的 桌子被装箱了……但我只能找到一块空地。在储蓄的同时 19:14:52723调试[SqlExceptionHelper]无法执行语句[n/a] org.postgresql.util.PSQLException:错误:“bay”列中的null值违反了非null约束 详细信息:失败行包含(3,0,null,null,null,null)。 位于org.postgresql.core.v3.QueryExecutorImpl.receiveE

基本上,我想将起始城市和结束城市引用到海湾对象。已经创建的

桌子被装箱了……但我只能找到一块空地。在储蓄的同时

19:14:52723调试[SqlExceptionHelper]无法执行语句[n/a] org.postgresql.util.PSQLException:错误:“bay”列中的null值违反了非null约束 详细信息:失败行包含(3,0,null,null,null,null)。 位于org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270) 位于org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998) 位于org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255) 位于org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570) 位于org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420) 位于org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:366) 位于org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102) 位于org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:186)

生成的表:

创建表iot.vehicle ( 车辆id整数不为空, 成本比基特, 不带时区的endtime时间戳, 无时区的satrttime时间戳, 车辆类型整数, 间隔整数不为空,
在此处输入代码
约束车辆钥匙(车辆id), 约束fk_1w93t3827hqk1dji0s585ocf1外键(间隔) 参考iot.bay(bay_id)匹配简单 更新时无操作删除时无操作 ) }

公车{

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "VEHICLE_ID")
private int vehicleId;

@ManyToOne(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="BAY", nullable = false,  insertable = false, updatable = false)
private Bay startCity;

@ManyToOne(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="BAY", nullable = false, insertable = false, updatable = false)
private Bay endCity;

@Column(name = "SATRTTIME")
private Date startTime;

@Column(name = "ENDTIME")
private Date endTime;

@Column(name = "COST")
private long cost;

@Column(name = "VEHICLETYPE")
private TranportType vehicleType;
}

公共舱{

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "BAY_ID")
private int bayId;

@Column(name = "COUNTRY", nullable = false)
String country;

@Column(name = "CITINAME", nullable = false)
String citiName;


@Column(name = "BAYTYPE")
TranportType bayType;
//能手/二传手
}

当您保存车辆时,您显然没有设置间隔值(
startCity
endCity

不要给他们起相同的名字:

@JoinColumn(name="...") //<- change name attribute here

@JoinColumn(name=“…”)//保存车辆时,显然没有设置间隔值(startCity和endCity)。不要给他们相同的名字(@JoinColumn(name=“…”)完美……这是我的错误,给了相同的值……我给了不同的值,现在就开始工作。所以我写了一个答案,这样其他人会更好地看到它。你可以接受它,因为它对你有用只是为了让它变得明显。