【问题标题】:Difference between @OneToOne and @Column@OneToOne 和 @Column 之间的区别
【发布时间】:2017-08-06 16:06:58
【问题描述】:

我想知道和

到底有什么区别

@OneToOne 和@Column

用于java中的对象。我刚想到这个,因为 Spring Boot 和它的 JPA 实现默认不支持 java 8,比如 Instant 类。

我现在手动更新,现在有代码片段:

@Entity
public class Volumen {

    @OneToOne
    Instant dateAndTime;

    public Volumen(Instant dateAndTime) {
        this.dateAndTime = dateAndTime;
    }

    public Instant getDateAndTime() {
        return dateAndTime;
    }

    public void setDateAndTime(Instant dateAndTime) {
        this.dateAndTime = dateAndTime;
    }
}

由于java lib对象的例子不多希望你能解释一下,有什么区别

    @OneToOne
    Instant dateAndTime;

    @Column
    Instant dateAndTime;

谢谢!

【问题讨论】:

标签: java hibernate spring-boot


【解决方案1】:

@OneToOne 指定一个关系,一个指向另一个实体的外键。 @Column 只是指定该属性表示表中的一列。

您只能在基本类型(String、Integer、Date、Long...)上使用@Column。当您想使用复杂对象(由您实现的自定义对象)时,您必须使用关系注释(@OneToOne@OneToMany@ManyToOne@ManyToMany

@OneToOne@Column 是 JPA 的注解。 JPA 是来自 Java EE 的规范,有多个版本。 Java EE 7 的版本是 JPA 2.1,它的日期早于 Java 8,因此 JPA 2.1 中不支持新的 java 8 Java Time API。您将不得不等待 Java EE 8 的发布(预计 2017 年底),因此下一个 JPA 版本将使用 @ColumnInstant

【讨论】:

  • 哦,好吧。只是为了确定:这意味着我必须从 Column Instant dateAndTime 更改上面的代码;到列日期日期和时间; ?
  • 正确。并添加@Temporal 以指定您是否需要在数据库中使用日期、时间或时间戳
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 2020-05-10
  • 2014-09-20
  • 2010-10-28
  • 2015-10-04
  • 2012-08-12
相关资源
最近更新 更多