[英]Spring-boot and Hibernate: How to flush data?
我在使用spring-boot + hibernate和数据库时遇到问题。 当我使用CrudRepository.save(...)保存实体时,有时我的实体仅从JPA中保存,但不在数据库中。
以为没有设置刷新模式,我将以下配置放在application.yaml中,但没有任何改变。 也许没有设置模式?
spring:
liquibase:
enabled: true
change-log: classpath:db/changelog/db.changelog-master.xml
datasource:
url: jdbc:postgresql://localhost:26257/mydb?sslmode=disable
username: myuser
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQL94Dialect
flushMode: ALWAYS
org:
hibernate:
flushMode: ALWAYS
show-sql: true
database-platform: org.hibernate.dialect.PostgreSQL94Dialect
hibernate:
ddl-auto: create
logging:
level:
org.hibernate.SQL: DEBUG
org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl: ERROR
org.hibernate.type.descriptor.sql.BasicBinder: TRACE
server:
port: 8081
@Repository
public interface PermissionRepository extends CrudRepository<Permission, Integer> {
}
任何想法? 谢谢 :)
首先,我在application.yml
看到您使用liquibase,这使我认为您使用它来管理数据库。 如此,首先,您不应该将spring.jpa.hibernate.ddl-auto
设置为创建,而是要validate
。 :)
那么,如果您向我们展示使用crudrepository的实体/实体和方法,那就太好了。
因此,这取决于您的实体,即是否存在@OneToMany或@ManyToOne关系? 您是否使用transactionManager?
关于jpa hibernate flushMode settings
:这完全取决于您如何引导Hibernate。 实体查询应使用默认的flushMode(AUTO)在旧模式和JPA模式上触发刷新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.