@OneToOne和@Column之间的区别

时间:2017-08-06 16:06:58

标签: java hibernate spring-boot

我想知道

之间究竟有什么区别
  

@OneToOne和@Column

用于java中的对象。我刚刚来到这里,因为Spring引导和它的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;

谢谢!

1 个答案:

答案 0 :(得分:3)

@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一起使用。