表示我需要跟踪原始表,类似于使用值和已执行的操作记录表
我有像
这样的实体 @Id
@GeneratedValue
private Long _id;
private String description;
private BigDecimal price;
private String imageUrl;
因此无论添加,修改等操作都必须使用值存储在日志表中。
指导我在春季启动时实现这一目标。
答案 0 :(得分:0)
您可以使用Spring JPA审核来解决此问题。
主要实体类:
@Entity @EntityListeners(MyEntityListener.class)
public class MyEntity {
@Id
@GeneratedValue
private Long _id;
private String description;
private BigDecimal price;
private String imageUrl;
// Getter Setter
}
审核监听器类:
@Component
public class MyEntityListener {
@Autowired
private LogEntryRepositoy logEntryRepositoy;
@PrePersist
@PreUpdate
@PreRemove
private void beforeAnyOperation(MyEntity myEntity) {
LogEntry entry = new LogEntry();
//Your custom logic
logEntryRepositoy.save(entry);
}
}
您的日志实体:
@Entity
public class LogEntry {
@Id
@GeneratedValue
private Long _id;
private String operation;
//Add other properties
}
您的日志存储库
@Repository
public interface LogEntryRepositoy extends JpaRepository<LogEntry, Long> {
}
Spring启动应用程序类:
@SpringBootApplication
@EnableJpaRepositories(considerNestedRepositories = true)
@EnableJpaAuditing
public class Application{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
进一步阅读请遵循此link
如果您使用的是h2以外的任何其他数据库,请在应用程序属性中进行配置。
例如,如果您使用的是MySQL:
spring.jpa.database=mysql
spring.datasource.url=jdbc:mysql://localhost:3306/_your_data_name
spring.datasource.username=your_user_name
spring.datasource.password=your_password
MySQL在pom.xml中的依赖性:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>