JPA 외부 키 0 값 최대 절전 모드 과도 속성 값 예외
동면(또는 mariadb) JPA가 외부 키에서 0 값으로 작동하지 않는 것을 발견했습니다.
저는 부모님 수업이 있습니다.
class Parent {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PARENT_ID", unique = true, nullable = false)
private Integer parentId;
}
그리고 아동반.
class Child {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "CHILD_ID", unique = true, nullable = false)
private Integer childId;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "PARENT_ID", nullable = false)
private Parent parent;
}
그래서 저희는 부모님이 2열입니다.parent_id=0
그리고.parent_id=1
문제는 ID가 0인 부모를 사용하려고 할 때 오류가 발생한다는 것입니다.이코드
Parent p = entityManager.find(Parent.class, new Integer(0));
Child c = new Child();
c.setParent(p);
entityManager.persist(c);
다음 오류와 함께 실패합니다.
자바 lang불법 상태 예외: org.hibernate.TransientPropertyValueException: Not-null 속성이 과도 값을 참조합니다. 현재 작업: com.where를 수행하기 전에 과도 인스턴스를 저장해야 합니다.Child.parent -> com.신경쓰지 말아요.부모
그러나 다음은 잘 작동합니다.
Parent p = entityManager.find(Parent.class, new Integer(1));
Child c = new Child();
c.setParent(p);
entityManager.persist(c);
그래서 제가 추측하기엔PARENT_ID=0
어떻게든 JPA를 혼란스럽게 해서 그것이 유효한 부모 대상이 아니라고 생각하게 합니다.
아니면 이것이 정말로 mariadb 문제입니까?0을(를) 삽입하기 위해 세션 설정을 변경해야 한다는 것과 관련이 있습니다.AUTO_INCREMENT
기둥들
이 작업을 수행하기 위해 제가 할 수 있는 구성이나 주석이 있습니까?유감스럽게도 우리는 기존 시스템에 JPA 코드를 넣게 되어 변경합니다.PARENT_ID
값은 사소한 작업이 아닙니다.모든 사람이 데이터 변환을 싫어합니다.
어떤 팁이든 대단히 감사합니다.
MariaDB/MySQL 핸들AUTO_INCREMENT
따라서 숫자는 1 이상이고 0은 유효한 시퀀스 번호입니다.JPA가 그러한(및 다른) 제한을 견디지 못하면 JPA는 중단됩니다. (미안하지만 MySQL 사용자의 삶을 어렵게 하는 타사 소프트웨어에 짜증이 납니다.)
언급URL : https://stackoverflow.com/questions/41114202/jpa-foreign-key-zero-0-value-hibernate-transientpropertyvalueexception
'programing' 카테고리의 다른 글
상위 범위가 지정된 Angularjs에서 모든 하위 범위를 가져옵니다. (0) | 2023.10.21 |
---|---|
루트가 아닌 하위 디렉토리에서 워드프레스 실행 (0) | 2023.10.21 |
레이저와 자바스크립트 코드 혼합 (0) | 2023.10.21 |
unitest Vspytest (0) | 2023.10.21 |
비트 와이즈 연산으로 인해 예기치 않은 변수 크기가 발생함 (0) | 2023.10.21 |