java - JPA2.0中的@OneToOne单向映射——持久化时出现SQL错误

标签 java hibernate jpa-2.0

我不知道如何声明 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/

相关文章:

Java + JPA : Search User in Database By first and last name return too many results. 有更好的方法吗?

spring - 不允许在共享 EntityManager 上创建事务 - 使用 Spring 事务或 EJB CMT

java - 使用 reSTLet 进行异步 Android GAE 通信

java - JPA/Hibernate 级联持久不起作用

java - org.springframework.boot:spring-boot-actuator:1.5.6.RELEASE-> 1.3.0.RELEASE是什么意思?

java - jpa2 hibernate使用现有实体从 View 加载数据

hibernate - HQL 批量插入

java - JPA 2 构造函数表达式不能使用构造函数

java - 使用 HttpClient 将照片上传到 Facebook

java - 分割逗号分隔的字符串,忽略引号中的逗号,但允许字符串带有一个双引号