@Entity
public class AccountEntity{
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@Cascade(CascadeType.ALL)
@JoinColumn(name = COLUMN_TYPEID_NAME, referencedColumnName = CardTypeEntity.COLUMN_ID_NAME, unique = true)
private CardTypeEntity cardTypeEntity;
}
@Entity
public class CardTypeEntity {
@Column(name = COLUMN_TYPENAME_NAME, nullable = false)
@NotNull
@NotBlank
private String typeName;
}
- 也就是一个纯单向的关联
-
account 数据库有个 column type_id 关联到 card_type 表的 pk id
- 但是在 java 代码里不需要写这个字段
- card_type 表有一个不为空的 unique 的type_name column
-
如果用 spring CrudRepository 的 save 方法, repositoryClass.save(accountEntity)
-
一个 new account 关联的 cardType name 表里可能不存在,那么 save 没问题,
- hibernate insert 一个 new cardType row, 然后 insert new account 且 new cardType id 放到 account type_id 字段里
- 但是如果 cardType 表里已存在,那就异常了, 这该咋办啊
-
一个 new account 关联的 cardType name 表里可能不存在,那么 save 没问题,
- 如果注入 entityManager, 用 em.persist 也是一样的
我想做一个每次插入一个新纪录,如果关联的 type 有那就只插入 account 且把 type_id 关联到表里,如果没有两张表都新建,该怎么写代码???