1

我正在使用 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?

4

1 回答 1

0

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

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

您可以在这里找到更多信息:

于 2013-10-20T11:18:54.440 回答