2016-07-11 2 views
0

방금 ​​모든 것을 지속시키기 위해 Spring을 사용하는 프로젝트에 들어 왔습니다. id 열에는 @GeneratedValue가 사용됩니다. SQL을 사용하여 다른 데이터베이스에서 데이터를 가져 오면 자동 생성 된 값이 동기화되지 않습니다.jpa 여기서 생성 된 값은 지속됩니다/늘리는 방법

Spring을 사용하는 백엔드는 HANA Cloud Platform에서 실행되는 Java Web Tomcat 7 Server에서 실행됩니다.

누군가이 생성 된 값을 저장하는 위치와 내가 SQL을 통해 삽입 한 값보다 위에있는 ID를 사용하도록 증가시키는 방법을 알고 있습니까? 우리는 HANA 데이터베이스를 사용하고 여기에 몇 가지 코드하는이 당신을 위해 무엇을 찾고있는 희망 :

, 당신에게 tietze111

편집을 매우 친절 안부 감사

public abstract class AbstractModel<ID extends Serializable> implements Serializable { 

private static final long serialVersionUID = -3275552243704225648L; 

@Id 
@GeneratedValue 
@JsonView(View.Summary.class) 
protected ID id; 
[...] 

eclipse tooltip

EDIT 2 (더 자세한 정보는 도움이 될 지 모르겠다.) : 우리는 최대 절전 모드를 사용하고 있지만 문제는 시스템에 시퀀스가 ​​나타나지 않는다는 것입니다. SEQUENCE라는 테이블이 있지만 고정 된 SEQ_COUNT 특성 만 있습니다. 이 값은 항상 50입니다. SEQ_NAME 속성의 값은 "SEQ_GEN"입니다. 표에는 1 개의 항목 만 있습니다. 정의가 this 인 모양입니다. 그림은 또한 순서가 없음을 보여줍니다.

해결 방법 : stackoverflow에서 this thread을 발견하고 Generation 전략을 GenerationType.TABLE로 변경했습니다. 이제 테이블의 ID를 쉽게 바꿀 수있었습니다.

+0

어떤 데이터베이스 시스템을 사용하고 있습니까? –

+0

그것은 발전기의 유형에 달려 있습니다. 몇 가지 코드를 게시하십시오. – dunni

+0

게시물에 몇 가지 사항을 추가했습니다. 귀하가 원하는 내용 이었기를 바랍니다. 빠른 답변 감사합니다! – tietze111

답변

1

this thread은 Stackoverflow에서 생성 전략의 의미에 대해 찾았고 GenerationType.TABLE에 생성 전략을 변경했습니다. 이제 테이블의 ID를 쉽게 바꿀 수있었습니다.

Neil Stockton에게 감사의 말을 전합니다.

0

이것은 실제로 SQL/DDL 질문입니다.

데이터베이스의 DDL을보고 시퀀스 이름이 무엇인지 찾아야합니다. 그런 다음 높은 가치를 업데이트해야합니다. hibernate의 기본 이름은 hibernate_sequence이지만 JPA 제공자에 따라 다를 수 있습니다.

alter sequence <sequence name> restart with <new starting value>; 

auto_increment 열을 사용하는 경우 테이블을 변경하여 업데이트하십시오. http://www.tutorialspoint.com/sap_hana/sap_hana_sql_sequences.htm

+0

답변을 주셔서 감사합니다. 그러나 문제는 카탈로그에 시퀀스 나 테이블이 생성되지 않았으므로 내가 제안한대로 할 수 없다는 것입니다. – tietze111