휴지 상태 시퀀스가 존재하지 않습니다.
.4.2
메서드를 했을 때 오류가 되었습니다.이 업그레이드 후 업데이트 메서드를 호출했을 때 스택트레이스에서 다음 오류가 검출되었습니다.
10:53:32,185 ERROR TableStructure:149 - could not read a hi value
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'test.hibernate_sequence' doesn't exist
주석으로 자동 증분 ID를 변경했습니다.
@GeneratedValue(strategy=GenerationType.AUTO)
아직 에러가 발생.
다음과 같은 것도 넣을 수 있습니다.
@GeneratedValue(strategy = GenerationType.IDENTITY)
프라이머리 키의 증분을 DateBase에서 관리할 수 있도록 합니다.
AUTO_INCREMENT PRIMARY KEY
로로로 5 로로로로로 xx.x x<property name="hibernate.id.new_generator_mappings">false</property>
를 참조해 주세요.
4.의 hibernate 4.:<prop key="hibernate.id.new_generator_mappings">false</prop>
스프링 부트의 조작
솔루션
.application.properties에 다음 문자열을 입력합니다.
spring.jpa.properties.hibernate.id.new_generator_mappings=false
설명.
4. 은 디폴트로 X "Atribut " 입니다.true
.
이 에러의 원인은 다음과 같습니다.
사용하고 있는 데이터베이스가 ID를 생성하는 방법을 검색합니다.MySql 또는 HSQSL의 경우 자동으로 증가하는 증분 필드가 있습니다.Postgres 또는 Oracle에서는 시퀀스 테이블을 사용합니다.시퀀스 테이블 이름을 지정하지 않았기 때문에 hibernate_sequence라는 이름의 시퀀스 테이블을 검색하여 기본값으로 사용합니다.따라서 데이터베이스에 이러한 시퀀스 테이블이 없을 수 있으며 이 오류가 발생합니다.
참고:
hbm 파일을 사용하여 O/R 매핑을 정의하는 경우.
주의:
휴지 상태 5에서 시퀀스 이름의 매개 변수 이름이 변경되었습니다.
Hibernate 4 에서는, 다음의 설정이 올바르게 동작했습니다.
<generator class="sequence">
<param name="sequence">xxxxxx_seq</param>
</generator>
그러나 휴지 상태 5에서는 동일한 매핑 설정 파일로 인해 "hibernate_sequence does not exist" 오류가 발생합니다.
이 오류를 수정하려면 매개 변수 이름을 다음과 같이 변경해야 합니다.
<generator class="sequence">
<param name="sequence_name">xxxxxx_seq</param>
</generator>
이 문제로 나는 두세 시간을 낭비했다.
그리고 어쩐지 서류는 없는 것 같아요.
저는 org.hibernate.id.dll의 소스 코드를 읽어야 합니다.Sequence Style Generator를 사용하여 알아냅니다.
같은 에러 「com.mysql.jdbc.exceptions.jdbc4」가 표시됩니다.MySQL SyntaxErrorException:테이블 'mylocaldb.hibernate_sequence'는 존재하지 않습니다.
spring 4. 및 기반 을 사용합니다spring mvc 4.3.7은 hibernate 5.2.9로 spring java는 java는 spring java를 사용합니다., 그럼 이제 를 요.hibernate.id.new_generator_mappings
@Eva Mariam 。
@Autowired
@Bean(name = "sessionFactory")
public SessionFactory getSessionFactory(DataSource dataSource) {
LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
sessionBuilder.addProperties(getHibernateProperties());
sessionBuilder.addAnnotatedClasses(User.class);
return sessionBuilder.buildSessionFactory();
}
private Properties getHibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.show_sql", "true");
properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
properties.put("hibernate.id.new_generator_mappings","false");
return properties;
}
그리고 그것은 매력적으로 작용했다.
사용할 때
@GeneratedValue(strategy=GenerationType.AUTO)
또는
@GeneratedValue
위의 간단한 방법이지만, 휴지기는 당신을 위한 최적의 생성 전략을 결정하기 시작합니다.이 경우, 하이버네이트는 선택되었습니다.
GenerationType.SEQUENCE
전략으로서 그리고 그것이 그것이 그것을 찾고 있는 이유이다.
schemaName.hibernate_sequence
시퀀스 기반 ID 생성을 위한 테이블입니다.
사용할 때GenerationType.SEQUENCE
필요한 전략으로서@TableGenerator
다음과 같이 합니다.
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "user_table_generator")
@TableGenerator(name = "user_table_generator",
table = "user_keys", pkColumnName = "PK_NAME", valueColumnName = "PK_VALUE")
@Column(name = "USER_ID")
private long userId;
전략을 설정했을 때마찬가지로
@GeneratedValue(strategy = GenerationType.IDENTITY)
.
휴지 상태가 되면 시퀀스 테이블 검색이 중지되므로 원래 문제가 해결됩니다.
오늘처럼 누군가 이 문제로 머리를 뽑을 경우를 대비해서, 저는 이 오류를 바꿀 때까지 해결할 수 없었다.
spring.jpa.hibernate.dll-auto=create
로.
spring.jpa.properties.hibernate.hbm2ddl.auto=create
hibernate 5.x에서는 hibernate.cfg.xml의 false에 set hibernate.id.new_disples_disples를 추가해야 합니다.
<session-factory>
......
<property name="show_sql">1</property>
<property name="hibernate.id.new_generator_mappings">false</property>
......
</session-factory>
휴지 상태 5 이전 버전을 사용하는 경우@GeneratedValue(strategy = GenerationType.IDENTITY)
마법처럼 작용합니다.단, 휴지 상태5 이후 다음과 같은 수정이 필요합니다.
@Id
@GeneratedValue(strategy= GenerationType.AUTO,generator="native")
@GenericGenerator(name = "native",strategy = "native")
private Long id;
DDL
`id` BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY
이유
휴지 상태 문제에서 발췌.
현재 hibernate.id.new_generation_http가 false로 설정되어 있는 경우 @GeneratedValue(전략 = GenerationType)입니다.AUTO)는 네이티브에 매핑됩니다.이 속성이 참이면(5.x의 디폴트 값) @GeneratedValue(전략 = GenerationType).AUTO)는 항상 SequenceStyleGenerator에 매핑됩니다.
따라서 시퀀스를 네이티브로 지원하지 않는 데이터베이스(예: MySQL)에서는 IDENTY 대신 TABLE 생성기를 사용합니다.
그러나 TABLE 생성기는 이동성이 더 높지만 데이터베이스에서 값을 가져올 때마다 별도의 트랜잭션을 사용합니다.실제로 IDENTY가 JDBC 배치 업데이트를 디세블로 하여 TABLE 생성기가 풀링된 옵티마이저를 사용하는 경우에도 IDENTY는 더 잘 확장됩니다.
다음과 같은 것도 넣을 수 있습니다.
@GeneratedValue(strategy = GenerationType.IDENTITY)
프라이머리 키의 증분을 DateBase에서 관리할 수 있도록 합니다.
AUTO_INCREMENT PRIMARY KEY
위의 답변이 도움이 되었습니다.
순서 1: application.properties로 들어갑니다.
spring.jpa.properties.hibernate.id.new_generator_mappings=false
2단계 : 프라이머리 키 열이 자동 증가 유형인지 확인합니다.
ALTER TABLE EMPLOYEES MODIFY COLUMN ID INT AUTO_INCREMENT;
이 문제는 HH-10876이 수정되었기 때문에 발생할 수 있습니다.다음으로 업데이트 해 주세요.
- ORM 5.2.1을 휴지 상태로 합니다.
- ORM 5.1.1을 휴지 상태로 합니다.
- ORM 5.0.11의 휴지 상태
포스트그레스에는 하이버네이트 시퀀스를 추가했습니다.PostGres Editor에서 다음 쿼리를 실행합니다.
CREATE SEQUENCE hibernate_sequence
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 2
CACHE 1;
ALTER TABLE hibernate_sequence
OWNER TO postgres;
질의 사용의 장단점을 알아보겠습니다만, 도움이 필요한 분은 이용하실 수 있습니다.
내 경우 모든 주석 바꾸기GenerationType.AUTO
타고GenerationType.SEQUENCE
문제를 해결했습니다.
이 쿼리 실행
create sequence hibernate_sequence start with 1 increment by 1
언급URL : https://stackoverflow.com/questions/32968527/hibernate-sequence-doesnt-exist
'itsource' 카테고리의 다른 글
Python에서 목록의 요소 수를 얻으려면 어떻게 해야 합니까? (0) | 2022.09.04 |
---|---|
64비트 정수를 16진수로 인쇄하는 방법 (0) | 2022.09.03 |
Https Connection Android (0) | 2022.09.03 |
JSTL if 동일한 문자열 태그 (0) | 2022.09.03 |
정적 방식과 인스턴스 방식의 차이 (0) | 2022.09.03 |