Hibernate ManyToOne有两列

时间:2015-08-07 14:30:10

标签: java spring hibernate postgresql

基本上我想将开始城市和结束城市引用到Bay对象。哪个已经创建。

表得到了装箱.....但我只能找到一个海湾场。并在保存期间

19:14:52,723 DEBUG [SqlExceptionHelper]无法执行语句[n / a] org.postgresql.util.PSQLException:错误:“bay”列中的null值违反了非null约束   细节:失败的行包含(3,0,null,null,null,null)。     at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270)     at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998)     at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)     在org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570)     at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420)     at 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)

生成表:

CREATE TABLE iot.vehicle (   vehicle_id整数NOT NULL,   费用bigint,   没有时区的结束时间戳,   没有时区的satrttime时间戳,   车型整数,   bay integer NOT NULL,enter code here   CONSTRAINT vehicle_pkey PRIMARY KEY(vehicle_id),   CONSTRAINT fk_1w93t3827hqk1dji0s585ocf1 FOREIGN KEY(bay)       参考文献iot.bay(bay_id)MATCH SIMPLE       ON更新没有操作,不执行任何操作 ) }

公共类车辆{

@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;

// getter / setter方法 }

1 个答案:

答案 0 :(得分:1)

当您坚持使用Vehicle时,您显然不会设置托架值(startCityendCity)。

并且不要给他们相同的名字:

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