Один ко многим
БД:
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, т.к. элементы могут дублироваться! // https://stackoverflow.com/questions/20749806/duplicates-in-onetomany-annotated-list 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
(Просмотрено 199 раз, 1 раз за сегодня)