У меня есть следующий класс сущностей:
@Entity
@Table(name = "\"TB03\"")
public class MDDEntity {
private int mddId;
private String version;
private String dataType;
private int min;
@Id
@SequenceGenerator(allocationSize = 1, initialValue = 1, sequenceName = "\"TB03_ID_seq\"", name = "tb03_id_seq")
@GeneratedValue(generator = "tb03_id_seq", strategy = GenerationType.SEQUENCE)
@Column(name = "\"TB03_ID\"", unique = true, nullable = false)
public int getMddId() {
return mddId;
}
public void setMddId(int mddId) {
this.mddId = mddId;
}
@Column(name = "\"VERSION\"")
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
@Column(name = "\"DATATYPE\"")
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
@Column(name = "\"MIN\"")
public int getMin() {
return min;
}
public void setMin(int min) {
this.min = min;
}
}
У меня есть следующий интерфейс хранилища:
@Repository
public interface MDDRepo extends JpaRepository<MDDEntity, Integer>{
String selectedBranchDataQuery = "select * from \"TB03\" where \"VERSION\"=:branchName";
@Query(nativeQuery = true,value = selectedBranchDataQuery)
List<MDDEntity> getSelectedBranchData(String branchName);
}
Я попытался добавить свойство generator_mappings в false со ссылкой на несколько постов, на которые я ссылался для этой ошибки
у меня есть следующий application.properties:
spring.datasource.hikari.connectionTimeout=20000
spring.datasource.hikari.maximumPoolSize=5
## PostgreSQL
spring.datasource.url=jdbc:postgresql://localhost:5432/LOCAL_DB
spring.datasource.username=//my username//
spring.datasource.password=//my password//
spring.datasource.initialization-mode=always
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.id.new_generator_mappings=false
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
У меня есть следующий метод в моем классе обслуживания, где я выбираю детали исходной версии и копирую данные исходной версии в новый версия:
@Override
public void copyVersionData(String newBranch, String sourceBranch) {
List<MDDEntity> parentVersionLs = mddRepo.getSelectedBranchData(sourceBranch);
for (MDDEntity parentVersion : parentVersionLs) {
MDDEntity mdd = new MDDEntity();
mdd.setDataType(parentVersion.getDataType());
mdd.setMin(parentVersion.getMin());
mdd.setVersion(newBranch);
mddRepo.saveAndFlush(mdd);
}
}
Когда я использую собственный запрос вставки для сохранения данных, он работает. Но когда я использую существующий метод (saveAndFlu sh) из JPARepository, я получаю следующую трассировку стека ошибок:
Примечание. Я создал последовательность в PostgreSQL DB
org.postgresql.util.PSQLException: ERROR: relation "tb03_id_seq" does not exist
Position: 17
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2510) ~[postgresql-42.2.10.jar:42.2.10]
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2245) ~[postgresql-42.2.10.jar:42.2.10]
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:311) ~[postgresql-42.2.10.jar:42.2.10]
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:447) ~[postgresql-42.2.10.jar:42.2.10]
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:368) ~[postgresql-42.2.10.jar:42.2.10]
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:159) ~[postgresql-42.2.10.jar:42.2.10]
at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:109) ~[postgresql-42.2.10.jar:42.2.10]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) ~[HikariCP-3.4.2.jar:na]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java) ~[HikariCP-3.4.2.jar:na]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:57) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.id.SequenceGenerator.generateHolder(SequenceGenerator.java:116) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.id.SequenceHiLoGenerator.generate(SequenceHiLoGenerator.java:62) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:115) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:55) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:102) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:710) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:696) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_241]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_241]