我正在研究 Spring Data JPA和Postgres
示例。在此示例中,我Auditing
通过以下链接实现了:保存对象时未填充https://www.baeldung.com/database-auditing-
jpa
和Spring Boot JPA @CreatedDate@LastModifiedDate。审核工作非常好当我执行repository.save时,在这种情况下,两个字段都带有注释@CreatedDate
并@LastModifiedDate
正确保存。
但是,当我尝试更新方法时却没有发生。
我开发了以下方法。
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EntityListeners(AuditingEntityListener.class)
@Entity
@Table(uniqueConstraints = {
@UniqueConstraint(name="student_name_key",columnNames = {"studentName"})
})
public class Student {
....
....
@Column(name="lastUpdateUser")
private String lastUpdateUser;
@LastModifiedDate
@Column(name="lastUpdateDate", nullable = false)
private LocalDateTime lastUpdateDate;
}
主应用
@SpringBootApplication
@EnableJpaAuditing
@EnableJpaRepositories(basePackages = {"com.xxx.xxx.repository"})
@ComponentScan(basePackages = {"com.xxx.yyy","com.xxx.xxx.studentportfolio"})
@EnableCaching
@EnableAsync
@EnableAspectJAutoProxy(proxyTargetClass = true)
@EnableAutoConfiguration(exclude = {ErrorMvcAutoConfiguration.class, SecurityAutoConfiguration.class})
public class MainApplication extends SpringBootServletInitializer implements CommandLineRunner{
public static void main(String[] args) {
SpringApplication.run(ProgramApplication.class, args);
}
}
StudentRepository.java
public interface StusentRepository extenss JpaRepository<Stusent, Long>{
@Mosifying(clearAutomatically = true)
@Query("UPDATE Stusent s SET s.studentDescription=:stuDesc, s.studentId=:studentId, s.sivisionCode=:cd, "
+ "s.status=:status WHERE s.studentName=:stuName")
vois upsateStudent(@Param("stuName") String studentName,
@Param("stuDesc") String studentDescription,
@Param("studentId") String studentId,
@Param("cd") String cd,
@Param("status") String status);
}
审核基于JPA生命周期事件。只有这些方法直接操纵实例(persist
,merge
和remove
)触发这样的事件。
查询的执行(修改或其他方式)不会触发任何事件,因此不会导致审核发生。
有关详细信息,请参见JPA规范的第3.5.2节“生命周期方法”。
为什么我需要再次使用hmap.put方法? 我的理解是这样的。 假设没有现有的键值对。所以,用 如果我在同一个实例中添加一个字符串,那么hashmap也应该自动更新,对吗?键=>列表对象。如果我添加到列表对象,那么对象引用不应该改变,对吗? 为什么我需要再次使用put方法并这样做?
安全配置 其他配置文件config git项目中的这个项目 告诉我,怎么了?为什么会出错?
运行spring boot应用程序时出现抛出错误 org.hibernate.tool.schema.spi.命令接受异常:通过JDBC语句执行DDL时出错 我已经研究过了,它看起来像是关于MySQL5方言的一些配置问题。 日志: 存储库界面: application.yml: pom.xml:
问题内容: 我有如下代码: 但是,不是在每次调用setText时在循环的每次迭代后更新文本区域,而是仅在完成所有任务运行后才更新文本。为什么会发生这种情况,我该如何解决? 问题答案: 您可能正在使用Swing线程,该线程正在等待代码执行才能更新UI。尝试为该循环使用单独的线程。
我有这样的Jpa存储库:
我在我的代码中扩展了JpaRepository,我不能使用saveAll方法,即使它在CrudRepository中,它由PagingAndSortingRepository扩展,而后者又由JpaRepository扩展。 当我尝试将该方法用作<code>存储库时。saveAll(Someterable)我的IDE找不到它,如果我尝试在我的存储库接口中覆盖它,如下所示,我仍然会得到一个错误,说明该