刷新Jpa2后,实体ID为空

时间:2014-11-29 11:31:35

标签: hibernate jpa flush

我在基于Spring的webapp中使用Hibernate和Jpa2。

当我尝试保存多个实体时,我得到了一个乐观的锁异常,因为即使调用flush方法,第一个保存的实体Id也为null。

实际上它应该返回insert实体及其id作为hibernate doc状态。

实体主键由两个值组成,如下所示:

    @Column(name = "tagId", nullable = false)
    @Basic(fetch = FetchType.EAGER)
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    Integer tagId;

    @Column(name = "modelId", nullable = false)
    @Basic(fetch = FetchType.EAGER)
    @Id
    Integer modelId;

我认为这个问题与标签ID字段是自动生成的而不是“注入”的事实有关。作为modelId。

商店dao方法如下:

    @Transactional
        public Tag saveTag(Tag tag) {
            Tag existingTag = tagDAO.findTagByPrimaryKey(tag.getTagId(), tag.getModelId());

            if(existingTag != null){
                if(existingTag != tag){
                    existingTag.setTagId(tag.getTagId());
                    existingTag.setModelId(tag.getModelId());
                    existingTag.setVersion(tag.getVersion());
                    existingTag.setName(tag.getName());
                }
                tag = tagDAO.store(existingTag);
            }else{
                tag = tagDAO.store(tag);
            }
            tagDAO.flush();

            return tag;
          }

建议?

0 个答案:

没有答案