Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA/Hibernate:已创建表的注释_Java_Hibernate_Jpa - Fatal编程技术网

Java JPA/Hibernate:已创建表的注释

Java JPA/Hibernate:已创建表的注释,java,hibernate,jpa,Java,Hibernate,Jpa,我有两个表(已经创建),比如Person和Address,具有以下模式: create table Person ( `id` int(11) not null auto_increment, `name` varchar(255) default null, primary key(`id`) ) create table Address ( `id` int(11) not null, `city` varchar(255) default null

我有两个表(已经创建),比如Person和Address,具有以下模式:

create table Person (
    `id` int(11) not null auto_increment,
    `name` varchar(255) default null,
    primary key(`id`)
)

create table Address (
    `id` int(11) not null,
    `city` varchar(255) default null,
    primary key (`id`),
    constraint foreign key (`id`) references `Person`(`id`)
)
现在,我应该在代码中使用哪些注释

这两个类别的骨架是:

class Person {
    @Id @GeneratedValue
    @Column(name="id")
    int id;
    String name;

    Address address;
}

class Address {
    int id;
}
我需要在Person.java中为Person类中的address字段和address类的id字段添加注释

 class Person {
   @Id @GeneratedValue
   @Column(name="id")
   int id;
   String name;

   @OneToOne
   @JoinColumn(name = "address_id", referencedColumnName = "id")
   Address address;
}

class Address {
    @id
    int id;
}
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "id",nullable=false)
@ForeignKey(name = "fk_id")     
private Address address;   
在Address.java中-

@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "id", updatable = false, insertable = false, nullable=false)  
private Person id;    

@Column(name = "id", insertable = false, updatable = false, nullable=false)
private Integer id;
我想你想用


查看文档中的示例2。

人员id和地址id始终相同是否正确?是。实际上,Person和Address具有一对一的关系。不确定这是否有效,因为SchemaWeb中没有Address\u id列。Address类中的id字段可以有列名“Address\u id”。它会工作吗?@JoinColumn(name=“address\u id”,referencedColumnName=“id”)表示person表中的address\u id列将引用address表中的id列,但您需要在person表中创建address\u id列。谢谢,但我无法在address类中添加person字段。此处person代表id。我已修改了示例,您可以再次查看此示例。在这里,我为一列创建了两个映射。一个将返回id,另一个将返回Person对象。
@Entity
class Person {
   @Id 
   @GeneratedValue
   int id;

   String name;

   @OneToOne 
   @MapsId
   Address address;
}

@Entity
class Address {
    @Id
    int id;
}