Spring JPA仓库似乎没有保存,也没有引发任何异常

时间:2019-03-26 18:57:07

标签: java spring-boot spring-data-jpa

我正在使用conversationIDs`starter-data-jpa 2.0.5.RELEASE。 该场景非常基本,构建一个实体并保存它。

在阅读文本之前,让我们遍历代码以获得更好的上下文。

实体类Spring boot 2.0.3.RELEASE(FINCHLEY):id(主键)不会自动生成,因为我们基本上是从另一个肯定是唯一的来源获得唯一的(Asset)

UUID.toString()

根据我添加的评论,您会看到我添加了该代码段,因为我们没有自动生成import lombok.*; import org.springframework.data.domain.Persistable; import javax.persistence.*; import java.util.List; @Setter @Getter @ToString @Builder @AllArgsConstructor @NoArgsConstructor @Entity @Table(name = "ASSET", schema = "SCHEMA") public class Asset implements Persistable<String> { // Propriety code hence column names removed. //Let's just assume column names are fine, since when I am doing a find(), results are cool private static final long serialVersionUID = 1L; @Id private String id; private String creditPool; private int quantity; private int assetStatusTypeId; private long assetTypeId; private int ageOfAsset; //The below snippet is part of Persistable<String> to force a new entry. Newly added following an answer in stackoverflow. //Here, update is basically false by default, //so as you can see isNew() will always return true forcing jpa to save a new record @Transient private boolean update; @Override public String getId() { return this.id; } @Override public boolean isNew() { return !this.update; } }

没有摘要和Persistable,问题是相同的。

由于商业原因,我的自定义存储库类具有以下自定义保存功能。

id

正在调用@Override public <S extends T> S save(S entity, long value) { entity.someParams(args getting from from a jar) //which is really fine return super.save(entity); } 的代码在下面

save

我已经多次验证了构建器,并且确实创建了Asset asset = Asset.builder() .id(UUID.randomId().toString()) //see always unique .assetStatusTypeId(a valid id) .assetTypeId(a valid id) .creditPool("pool") .quantity(integer value) .ageOfAsset(integer value).build(); repo.save(asset); 对象。

但是罪魁祸首Asset从未被处决。

我已经打开save来检查是否调用了插入查询。但我看不到这样的查询。

休眠属性:

showSQL:true

我考虑了一个场景,即使进行了所有安全检查,JPA仍会将其视为更新场景,

我忽略了保存,也使用了jpa: show-sql: true properties: hibernate: enable_lazy_load_no_trans: true show_sql: true format_sql: true jdbc: batch_size: 5 。即使如此,也不会插入。

persist

请对此提供帮助。

stackoverflow Sources for my workarounds和重复项。 在这方面的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

保存后应刷新或直接使用saveAndFlush(asset)。