0

次のスキーマを持つ Person と Address の 2 つのテーブル (作成済み) があります。

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クラスのaddressフィールドとAddressクラスのidフィールドに注釈を追加する必要があります。

4

3 に答える 3

1

Person.java で

@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;
于 2012-09-05T08:45:49.220 に答える
0
 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;
}
于 2012-09-05T08:45:07.427 に答える
0

@MapsIdを使いたいと思います。

@Entity
class Person {
   @Id 
   @GeneratedValue
   int id;

   String name;

   @OneToOne 
   @MapsId
   Address address;
}

@Entity
class Address {
    @Id
    int id;
}

@OneToOneドキュメントの例 2 を確認してください。

于 2012-09-05T19:46:24.780 に答える