[SPRING] Spring 데이터 JPA는 하나의 복합 키만 자동으로 증가시키는 문제입니다.
SPRINGSpring 데이터 JPA는 하나의 복합 키만 자동으로 증가시키는 문제입니다.
MySQL 데이터베이스를 사용하고 있습니다.
내 테이블에는 두 개의 기본 키가 있으며 그 중 하나가 자동으로 증가합니다.
@Embeddable
public class EmployeeId implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Column(name = "id", nullable = false)//
This is just Pk in mysql table
**private int id;**
// I have tried and @GeneratedValue(strategy = GenerationType.IDENTITY),
@GeneratedValue(strategy = GenerationType.IDENTITY)
//and @GeneratedValue(strategy = GenerationType.TABLE)
//@GeneratedValue(strategy = GenerationType.AUTO, generator = "id") @SequenceGenerator(name = "id", sequenceName = "id")
**this is auto incremented and pk in mysql table**
@Column(name = "gender_key", nullable = false)
private int gender_key;
}
@Entity
@Table(name = "employee")
public class employee {
@EmbeddedId
private EmployeeId employeeId;
private String emp_name;
private String mobile_no;
employee() {
}}
public interface employeeRepository extends
JpaRepository<employee, EmployeeId> {
}
내 컨트롤러에서 employeeRepository.save (bean) 다음에있는 ID를 원합니다. 왜냐하면 나는 다른 DB에 그 id를 저장하기를 원하기 때문이다.
logger.info ( "gender_key is --->"+ gender_key);
하지만 gender_key 값은 항상 0이됩니다.
내가 시도한 것은 :
bean = employeeRepository.save(bean)
int gender_key= bean.getGender_key();
logger.info("gender_keyis --- > "+gender_key);
그러나 gender_key 값은 여전히 0 (제로)입니다. 또는 저장소에 작성해야하는 모든 쿼리.
어떻게하면 MySQL 테이블에 삽입되는 gender_key의 자동 증가 값을 얻을 수 있습니까?
도와주세요.
미리 감사드립니다.
해결법
-
==============================
1.JPA @Id는 데이터베이스 PK 열과 일치 할 필요가 없습니다. 그것이 유일 할 때까지는 모든 것이 중요합니다.
JPA @Id는 데이터베이스 PK 열과 일치 할 필요가 없습니다. 그것이 유일 할 때까지는 모든 것이 중요합니다.
https://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing에서 :
자동 증분 열이 고유 한 것으로 보장되므로 gender_key를 @ID로 사용하고 id를 일반 열로 매핑하면됩니다.
@Entity @Table(name = "employee") public class employee { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int genderKey; @Column private int id; }
솔직히 말해서 당신의 스키마는 혼란 스럽습니다.
나는 또한 다음을 읽을 것을 제안 할 것이다 :
https://www.javatpoint.com/java-naming-conventions
-
==============================
2.id 필드에 @GeneratedValue가 없습니다. 값에 따라 시퀀스, ID 테이블, 자동 내부 ID 생성과 같은 생성 전략을 자유롭게 선택할 수 있습니다. 마지막으로 중요한 것은 GenerationType.AUTO가 언급 된 전략 중 하나를 선택합니다. javax.persistence.GeneratedValue 및 javax.persistence.GenerationType에 대해서는 Javadocs를 참조하십시오.
id 필드에 @GeneratedValue가 없습니다. 값에 따라 시퀀스, ID 테이블, 자동 내부 ID 생성과 같은 생성 전략을 자유롭게 선택할 수 있습니다. 마지막으로 중요한 것은 GenerationType.AUTO가 언급 된 전략 중 하나를 선택합니다. javax.persistence.GeneratedValue 및 javax.persistence.GenerationType에 대해서는 Javadocs를 참조하십시오.
from https://stackoverflow.com/questions/46358163/spring-data-jpa-only-one-composite-key-is-auto-incremented-issue by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 연결 풀링을 위해 Hibernate, Spring 및 Apache dbcp를 구성하는 방법은 무엇입니까? (0) | 2019.05.01 |
---|---|
[SPRING] Spring WebApp에서 Elasticsearch 클라이언트를 사용할 때의 링크 오류 (0) | 2019.05.01 |
[SPRING] Spring Rest - 예외 Json 데이터 생성하기 [duplicate] (0) | 2019.05.01 |
[SPRING] CommandLineRunner 실행 실패 - 스프링 배치 (0) | 2019.05.01 |
[SPRING] 값을 집계하고 단일 값을 쓰는 스프링 배치 (0) | 2019.05.01 |