【问题标题】:JPA Hibernate bidirectional relationJPA Hibernate 双向关系
【发布时间】:2012-03-23 15:00:00
【问题描述】:

我是 JPA 的新手,在理解双向关系方面存在一些问题。

我有实体 Job 和 Execution。 1 个作业恰好属于 1 个执行,反之亦然。所以,我想使用 onetoone 关系。

我的代码如下所示:

@Entity
public class Execution {
        ....
       @OneToOne(cascade=CascadeType.ALL,optional=false)
        private Job job;
        ....
}

@Entity
public class Job{
    ......
   @OneToOne(mappedBy="job",optional=false)
    private Execution execution;
    .....
 }

我为这两个字段设置了 optional=false。正如预期的那样,如果我尝试持久化具有 Null Job 对象的 Execution 对象,休眠将引发异常。
但是可以使用 Null Execution 对象来持久化 Job 对象,尽管我设置了 optional=false。

我做错了什么?

【问题讨论】:

  • 你能发布更多关于你的数据库结构的信息吗?
  • hibernate 不根据我的注释创建数据库结构吗?
  • 可以,但不建议用于生产,我从未使用过。一般来说,我认为你应该设计你的数据库,然后创建实体以适应这种结构。你用的是什么数据库?
  • 究竟什么东西会持久化到你的数据库中?执行对象的外键是否也为 NULL?我猜一个执行对象是在某个地方动态创建的,而持久化或者数据库结构应该被改变......但这真的只是一个猜测。

标签: java hibernate jpa


【解决方案1】:

尝试添加以下注释。

@Column(nullable = false)

【讨论】:

  • 但这不是 jpa 注释
  • 对不起,试试:@Column(nullable = false)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-23
  • 2015-08-24
  • 2013-05-09
相关资源
最近更新 更多