【问题标题】:Hibernate: ID of entity added to listHibernate:添加到列表中的实体 ID
【发布时间】:2013-10-20 10:48:49
【问题描述】:

我正在使用 Spring Data JPA + Hibernate。在将实体添加到其他实体列表并保存后,我需要获取实体 ID。代码如下:

@Entity
public class Product extends AbstractAuditable<Long> {


    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name = "product_id", nullable = false)
    private List<Feedback> feedbacks = new ArrayList<Feedback>();

    ...

}


@Entity
public class Feedback extends AbstractPersistable<Long> {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "product_id", insertable = false, updatable = false, nullable = false)
    private Product product;

    ...

}


public interface ProductRepository extends JpaRepository<Product, Long> {

}


Feedback feedback = new Feedback();
product.getFeedbacks().add(feedback);
productRepository.saveProduct(product);
feedback.getId(); // returns null

保存后如何正确获取反馈ID?

【问题讨论】:

    标签: java hibernate jpa spring-data spring-data-jpa


    【解决方案1】:

    您可以从 Hibernate Session 接口(或 EntityManager 接口)执行 refresh 方法以“从底层数据库中的给定实例重新读取状态”。示例:

    session.save(object);
    session.flush();
    session.refresh(object);
    

    您可以在此处找到更多信息:

    【讨论】:

      猜你喜欢
      • 2015-12-14
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      相关资源
      最近更新 更多