spring-data-jpa 重复使用em.persist()不起作用的问题

yfjy0ee7  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(239)

我正在尝试使用persist来插入数据。第一个em.persist()和第二个em.persist()运行得很好,但是第三个em.persist()不起作用。
我认为第二个em和第三个em共享同一个QuotaProductInfo VO,所以它不工作。我不确定我的猜测是正确的。
无论如何,我如何才能使第二个和第三个em.persist()都工作。

QuotaInfo quotaInfo = new QuotaInfo();      
quotaInfo.setProject(project);
quotaInfo.setSchool(school);
quotaInfo.setRegion(region);                
quotaInfo.setSalesMan(salesMan);
quotaInfo.setStat(stat);
quotaInfo.setRegDate(LocalDateTime.now());
em.persist(quotaInfo);  //here em.persist() 1   

Long maxSeq_ = (Long) em.createQuery("select count(m) from QuotaInfo AS m").getSingleResult();
int maxSeq = maxSeq_.intValue() + 1;

QuotaProductInfo quotaPInfo_1 = new QuotaProductInfo();     
quotaPInfo_1.setName(product1);
quotaPInfo_1.setQnt(qnt1);
quotaPInfo_1.setPriceUnit(0);
quotaPInfo_1.setQuotaSeq(maxSeq);
em.persist(quotaPInfo_1);   //here em.persist() 2               
if(product2!=null) {
    QuotaProductInfo quotaPInfo_2 = new QuotaProductInfo();     
    quotaPInfo_2.setName(product2);
    qnt2 = Integer.parseInt(qnt2_);
    quotaPInfo_2.setQnt(qnt2);
    quotaPInfo_2.setPriceUnit(0);
    quotaPInfo_2.setQuotaSeq(maxSeq);
    em.persist(quotaPInfo_2);   //here em.persist() 3
}
c3frrgcw

c3frrgcw1#

你可以通过改变你的实体vo类来解决这个问题。

public class QuotaInfo {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int seq;

只需添加@GeneratedValue注解即可解决此问题。

相关问题