Spring JPA CrudRepository save(Entity)在id字段中返回0

我将春季JPA / Hibernate 5添加到一个旧项目中.我正在针对Mainframe / DB2表运行CrudRepository .save(Entity)方法.该行已插入,但returnEntity.getIdColumn()中包含0.我确实需要ID进行进一步处理.有人可以帮忙吗?非常感谢你!

@Entity
Table(name="MY_TABLE")
public class myClass {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="ID_COLUMN")
private Long idColumn;
...

}

身份是唯一有效的策略类型.
这是Service类:

@Transactional
public Entiry insertEntity(Entity originalEntity) {
   return MyRepository.save(originalEntity);
}
Runner class:
Entity originalEntity = createEntity();
Entity returnedEntity = ServiceClass.insertEntity(originalEntity);
System.out.println(originalEntity.getIdColumn());
System.out.println(returnedEntity.getIdColumn());

解决方法:

我的猜测是,您正在尝试在将事务刷新到数据库之前获取ID.因此,JPA不知道将分配什么ID并返回0.

编辑:
我建议吃这样的东西:

@Transactional
public Entity save( .....) {
   //some code
   repository.save(entity);
   //some code
   return entity;
}

事务将在此方法的末尾刷新,并且从它返回的实体应具有真实ID.

上一篇:c#-找不到远程主机“.”错误


下一篇:DB2数据库导入导出