我不知道如何声明 OneToOne 单向关系。 TripDeparture 模型具有 Trip 模型的外键(这就是数据库的设置方式)。尝试添加出发位置设置为 null 的行程时,出现以下错误。当我取出“departureLocation”声明时,一切正常。
11891 [btpool0-2] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1054, SQLState: 42S22
11891 [btpool0-2] ERROR org.hibernate.util.JDBCExceptionReporter - Unknown column 'tripId' in 'field list'
我的想法已经用完了......有人可以帮忙吗?
谢谢!
家长:
@Entity
@Table(name = "TRIP")
public class Trip implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
@JoinColumn(name = "tripId")
private TripDeparture departureLocation;
child :
@Entity
@Table(name = "DEPARTURE_LOCATION")
public class TripDeparture implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private int tripId;
最佳答案
这是我解决这个问题的方法。我没有使用@JoinColumn,而是使用了@PrimaryKeyJoinColumn。我还删除了 DEPARTURE_LOCATION 中的“id”变量(和列),但这应该不重要。
父级:
@Entity
@Table(name = "TRIP")
public class Trip implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
@PrimaryKeyJoinColumn
private TripDeparture departureLocation;
child :
@Entity
@Table(name = "DEPARTURE_LOCATION")
public class TripDeparture implements Serializable {
@Id
private int tripId;
关于java - JPA2.0中的@OneToOne单向映射——持久化时出现SQL错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9206974/