Hibernate entity association, persiste 玩不明白

查看 18|回复 0
作者:bleulucaswu   
@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 表里已存在,那就异常了, 这该咋办啊
  • 如果注入 entityManager, 用 em.persist 也是一样的

    我想做一个每次插入一个新纪录,如果关联的 type 有那就只插入 account 且把 type_id 关联到表里,如果没有两张表都新建,该怎么写代码???
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部