我使用spring数据jpa来执行实体持久性。我在事务中将数据保存到数据库时遇到了问题。
我测试我的存储库,save方法会在没有事务时将id填充到实体,但是当我在服务上使用事务时,save方法不再填充id,我想知道为什么,任何建议表示赞赏
我的服务:
@Transactional
@Override
public Long save(ClusterDTO clusterDTO) {
Cluster cluster = clusterMapper.dtoToDO(clusterDTO);
cluster.setGmtCreate(new Date());
cluster.setGmtModified(new Date());
clusterRepository.save(cluster);
return cluster.getId();
}
我的存储库非常简单:
public interface ClusterRepository extends CrudRepository<Cluster, Long> {
}
我的实体是:
@Entity
@Table(name = "cluster")
public class Cluster {
@Id
@Column
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
private String name;
...getters setters
}
答案 0 :(得分:0)
您需要捕获save方法返回的更新的集群对象,因此您的代码应如下所示:
@Transactional
@Override
public Long save(ClusterDTO clusterDTO) {
Cluster cluster = clusterMapper.dtoToDO(clusterDTO);
cluster.setGmtCreate(new Date());
cluster.setGmtModified(new Date());
cluster = clusterRepository.save(cluster);
return cluster.getId();
}