如何为每个springjpa组合键组创建id?

nvbavucw  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(290)

我想根据示例\u id:1,2,3.以这种方式增加id值。。1, 2, 3.. 怎么做?您可以认为每个组的id值增加1。

@Entity
@IdClass(CompositeKey.class)
public class EntityExample {
    @Id
    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name = "sample_id")
    private SampleEntity sample;

    @Id
    private Long id;

    ...
    ...
}
6kkfgxo0

6kkfgxo01#

我通过单独实现id生成器解决了这个问题。谢谢您。

public class CompositeKeyGenerator extends IdentityGenerator {

  @Override
  public Serializable generate(SharedSessionContractImplementor session, Object obj) throws HibernateException {
    if (obj instanceof EntityExample) {
      String query = String.format("select id from %s where sample.id = %d",
          obj.getClass().getSimpleName(), ((EntityExample) obj).getSampleEntity().getSampleId());

      List<Long> resultList = session.createQuery(query).getResultList();
      if (!resultList.isEmpty()) {
        return resultList.stream().mapToLong(v -> v).max().orElse(1L) + 1;
      }
      return 1L;
    } else {
      return null;
    }
  }
}

相关问题