отношения один-к-одному с использованием JPA - PullRequest
0 голосов
/ 26 марта 2010

Я создал две таблицы, используя JPA. мне нужно дать 1-1 отношения между этими таблицами. Может кто-нибудь сказать мне, как установить связь между этими таблицами.

1 Ответ

2 голосов
/ 26 марта 2010

Просто добавьте столбец в таблицу, «владеющий» отношением с ограничением FK. Например:

CREATE TABLE MYENTITYA (
        ID BIGINT NOT NULL,
        MYENTITYB_ID BIGINT
    );

CREATE TABLE MYENTITYB (
        ID BIGINT NOT NULL
    );

ALTER TABLE MYENTITYA ADD CONSTRAINT SQL100326144838300 PRIMARY KEY (ID);

ALTER TABLE MYENTITYB ADD CONSTRAINT SQL100326144838430 PRIMARY KEY (ID);

ALTER TABLE MYENTITYA ADD CONSTRAINT FKB65AC952578E2EA3 FOREIGN KEY (MYENTITYB_ID)
    REFERENCES MYENTITYB (ID);

Это будет отображаться так:

@Entity
public class MyEntityA implements Serializable {
    private Long id;
    private MyEntityB myEntityB;

    @Id
    @GeneratedValue
    public Long getId() {
        return this.id;
    }

    @OneToOne(optional = true, cascade = CascadeType.ALL)
    public MyEntityB getEntityB() {
        return this.myEntityB;
    }

    //...
}

@Entity
public class MyEntityB implements Serializable {
    private Long id;

    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }

    //...
}

Если соотношение между EntityA и EntityB не является обязательным, добавьте ограничение NOT NULL.

...