首页 > 解决方案 > 使用 JPA + PostgreSql 在非 id(pk) 列中自动增量设置

问题描述

感谢阅读这个问题。我正在使用 Spring Data JPA + PostgreSql。

我引用了 url > Hibernate JPA Sequence (non-Id)在非 id(pk) 列中设置自动增量属性,但它不起作用(插入空值)。

这是@Entity的一部分

@Id
@GeneratedValue(generator = "UUID")
@GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
String id;

@Column(name = "agent_no", columnDefinition = "serial", insertable = false, updatable = false)
@Generated(GenerationTime.INSERT)
private Integer agentNo;

这是@Service的一部分

/* POST */
@Transactional
public  AgentDto create(AgentUpsertDto newItem) throws Exception {
    Optional.ofNullable(newItem).orElseThrow(() -> new DataException("No Data"));
    UEMspAgent item = newItem.createBy(modelMapper);
    item = agentRepository.save(item);
    return modelMapper.map(item, AgentDto.class);
}

这是 AgentUpsertDto 的一部分

private String id;
private Integer agentNo;
private String displayName;
private String ipAddress;

@Override
public Agent createBy(ModelMapper mapper) throws Exception {
    // TODO Auto-generated method stub
    Agent entity = mapper.map(this, Agent.class);
    
    /* */
    if (StringUtils.isAllEmpty(entity.getDisplayName())) {
        throw new DataException("No Data");
    }
    if (StringUtils.isAllEmpty(entity.getIpAddress())) {
        throw new DataException("No Data");
    }
    
    return entity;
}

我希望列“agentNo”具有自动增量属性,但是当插入的数据为空时(其他都可以)。你能帮我解决这个问题吗?

标签: postgresqljpa

解决方案


推荐阅读