2013-11-27 1 views
1

Я просто интересно, если вы, ребята могли бы пролить свет на то, что сбивает с толку менякак достичь один-ко-многим с помощью JPA

У меня есть две таблицы один userdetails

create table usertable (
     username varchar(128) NOT NULL, 
     password varchar(128) NOT NULL 
); 

и один addresses, как я могу сопоставить его в JPA, чтобы у меня мог быть один пользователь на многие адреса, как это можно добиться, нужно ли это делать при создании таблицы или в классах?

благодаря

EDITTTT

create table usertable (
     username varchar(128) NOT NULL CONSTRAINT USER_PK PRIMARY KEY , 
     password varchar(128) NOT NULL, 
firstaname varchar(30) NOT NULL, 
surname varchar(30) NOT NULL, 
gender varchar(6) NOT NULL, 
homenumber varchar(128) NOT NULL, 
mobilenumber varchar(128) NOT NULL, 
dob date NOT NULL, 
id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1) 
); 


create table grouptable(
     username varchar(128) NOT NULL, 
     groupid varchar(128) NOT NULL, 
     CONSTRAINT GROUP_PK PRIMARY KEY(username, groupid), 
     CONSTRAINT USER_FK FOREIGN KEY(username) REFERENCES usertable(username) 
      ON DELETE CASCADE ON UPDATE RESTRICT 
    ); 

create table address(
username varchar(128) NOT NULL, 
       addressline1 varchar(128) NOT NULL, 
       addressline2 varchar(128) NOT NULL, 
       addressline3 varchar(128) NOT NULL, 
       country varchar(128) NOT NULL, 
       postcode varchar(9) NOT NULL, 
CONSTRAINT USER2_FK FOREIGN KEY(username) REFERENCES usertable(username) 
        ); 

ответ

2

Это может быть указано в классах сущностей. Вот краткий пример использования аннотаций.

@Entity 
public class UserDetail { 
    @Id 
    @Column(name="ID") 
    private long id; 
    ... 
    @OneToMany(mappedBy="userdetail") 
    private List<Address> addresses; 
    ... 
} 

@Entity 
public class Address { 
    @Id 
    private long id; 
    ... 
    @ManyToOne(fetch=FetchType.LAZY) 
    @JoinColumn(name="userdetail") 
    private UserDetail userdetail; 
    ... 
} 
+0

Хорошо, спасибо, что имеет смысл, в фактической настройке db необходимо настроить внешние ключи и т. Д.? или только две таблицы, и вот как они связаны? – user2061913

+0

Имеет смысл настроить его с помощью внешних ключей, адрес будет иметь столбец с именем userdetail, который является внешним ключом в столбце id таблицы userdetail. –

+0

Я добавил код, который я сейчас использую для генерации таблицы данных выше, как бы я добавил сюда внешний ключ? – user2061913

Смежные вопросы