【发布时间】:2020-11-04 09:17:54
【问题描述】:
我在 Spring 启动应用程序中的 .save() 调用中遇到以下异常。我正在运行 Spring boot 2.2.5.RELEASE
堆栈跟踪太大,无法包含在此处,因此我已将其分享到 this link。
代码如下:
Search search = new Search();
// ......Build Search Object here
searchRepository.save(search);
public interface searchRepository
extends BaseJpaRepository<Search, Long>, JpaSpecificationExecutor<Search> {
}
@Data
@Entity
@Table(name = "search")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Search extends AbstractAuditingEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
@Column(name = "externalId")
private Long externalId;
@NotNull
@Column(name = "search_term")
private String searchTerm;
@NotNull
@Column(name = "filters")
private String filters;
@NotNull
@Column(name = "results")
private Long results;
@Override
public int hashCode() {
return id != null ? id.hashCode() : IntegerUtils.ANSWER_TO_LIFE_THE_UNIVERSE_AND_EVERYTHING;
}
}
我已通过 IDE 上的调试模式确保所有 @NotNull 字段不包含 Null。我还在 application.yml 中添加了以下缺失值:
jpa:
hibernate:
naming:
implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
查看了有关 stackoverflow 的多个其他答案,但没有任何关于此错误的信息。我最近升级了我的弹簧靴,从那时起这个错误就一直出现。此外,我能够读/写 Spring 会话表,所以我假设这不是配置问题?
我做错了什么?
【问题讨论】:
-
如果你决定明确实现
hashCode(),我想你应该对equals(Object other)(Search类)做同样的事情。您能否提供一个完整的堆栈跟踪。你看到this了吗? -
我猜你是对的。但我不相信这可能是导致这个问题的原因。是的,我确实看过那个答案,但在那里找不到解决方案。那个有
org.hibernate.exception.SQLGrammarException,这不是我所拥有的,所以这是一个不同的问题。还使用完整的堆栈跟踪更新了问题。 -
我找到了答案。我会在一秒钟内发布它,这样它可能会帮助遇到同样问题的其他人。
标签: java spring-boot hibernate jpa spring-data-jpa