JPA relations
Один ко многим
БД:
Branch. Справочная таблица реквизитов банка для денежных счетов.
Поле | Тип | Описание | Ограничения |
id | varchar(32) | Город операционного офиса банка | PK |
bank | varchar(256) | Наименование офиса (для реквизитов перевода) | not null |
bik | varchar(9) | БИК |
Branch_Code. Справочная таблица соответствия города и кода отделения банка.
Поле | Тип | Описание | Ограничения |
code | integer | Код отделения | PK |
branch_id | varchar(256) | Город отделения | not null FK на branch.id при удалении записи в branch производится каскадное удаление |
Liquibase:
< changeSet id = "initial-1" author = "knastnt" > < createTable tableName = "branch" > < column name = "id" type = "varchar(32)" > < constraints nullable = "false" primaryKey = "true" primaryKeyName = "branch_pkey" /> </ column > < column name = "bank" type = "varchar(256)" > < constraints nullable = "false" /> </ column > < column name = "bik" type = "varchar(9)" /> </ createTable > </ changeSet > < changeSet id = "initial-2" author = "knastnt" > < createTable tableName = "branch_code" > < column name = "code" type = "integer" > < constraints nullable = "false" primaryKey = "true" primaryKeyName = "branch_code_pkey" /> </ column > < column name = "branch_id" type = "varchar(32)" > < constraints foreignKeyName = "fk_branch_code_to_branch" referencedColumnNames = "id" referencedTableName = "branch" deleteCascade = "true" nullable = "false" /> </ column > </ createTable > </ changeSet > |
Java:
@Entity public class Branch { @Id private String id; private String bank; private String bik; @OneToMany (mappedBy = "branch_id" ) //По-умолчанию fetch=LAZY, но если нужно использовать EAGER, // то нужно использовать Set, т.к. элементы могут дублироваться! private List<BranchCode> branchCodes; } @Entity public class BranchCode { @Id private Integer code; @ManyToOne (fetch = FetchType.LAZY, optional = false , cascade = CascadeType.REMOVE) @JoinColumn (name = "branch_id" , referencedColumnName = "id" ) //name - имя столбца в своей таблице //referencedColumnName - имя id-переменной объекта на который ссылаемся private Branch branch; } |
Один ко многим без @Id
Один к одному
Один к одному без @Id
(Просмотрено 297 раз, 1 раз за сегодня)