【问题标题】:Hibernate ManyToOne with two columns用两列休眠 ManyToOne
【发布时间】:2015-08-07 14:30:10
【问题描述】:

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

桌子被装箱了......但我只能找到一个海湾领域。并且在保存的同时

19:14:52,723 调试 [SqlExceptionHelper] 无法执行语句 [n/a] org.postgresql.util.PSQLException:错误:“bay”列中的空值违反非空约束 详细信息:失败行包含 (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 ( vehicle_id 整数 NOT NULL, 成本大, 没有时区的结束时间时间戳, satrttime 没有时区的时间戳, 车辆类型整数, 海湾整数 NOT NULL,enter code here 约束vehicle_pkey PRIMARY KEY (vehicle_id), 约束 fk_1w93t3827hqk1dji0s585ocf1 外键(bay) 参考 iot.bay (bay_id) MATCH SIMPLE 更新无操作 删除无操作 ) }

公共类车辆{

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

【问题讨论】:

  • 保存Vehicle 时,显然没有设置bay 值(startCity 和endCity)。并且不要给他们相同的名字(@JoinColumn(name="...")
  • 完美......这是我的错误给出了相同的值......我给出了不同的值并且现在正在工作。
  • 所以我写了一个答案,以便其他人更好地看到。你可以接受它,因为它对你有用,只是为了让它显而易见。

标签: java spring hibernate postgresql


【解决方案1】:

当你坚持 Vehicle 时,你显然没有设置间隔值(startCityendCity)。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多