2015-01-07 4 views
0

두 클래스가 있습니다 : TranscriptionServiceTranscriptionConfig입니다.문자열 필드가있는 ManyToOne 관계

TranscriptionConfig에는 serviceName 변수가 있습니다. 즉, 문자열이며 setters와 getters가 있습니다.

TranscriptionService에는 TranscriptionConfig에 대한 변수 또는 참조가 없습니다.

transcriptionConfigtranscriptionServices의 두 데이터베이스 테이블이 있습니다. transcriptionConfig의 필드는 serviceName이고 nametranscriptionServices입니다.

관리자는 문자열 값을 transcriptionConfig 안에 설정할 수 있어야합니다. 그런 다음 에있는 name 내의 동등한 문자열을 참조합니다. 데이터베이스의 transcriptionServices 항목은 수동으로 미리 정의되므로 개체를 사용하여 설정할 필요가 없습니다. 다음과 같이 serviceName에 대한 transcriptionConfig 내부

나의 현재 최대 절전 모드 코드는 다음과 String 엔티티 아니므로

@ManyToOne 
@JoinColumn(name = "serviceName", nullable = false) 
private String transcriptionService; 

그러나, 내가이 작업을 수행 할 수 없습니다. 나는 쓸데없이 target-entity을 추가하려고 시도했다.

manyToOne 관계가있는 것 같습니다. TranscriptionService 클래스의 인스턴스가 있어야하지만 transcriptionConfig에는이 개체가 포함되지 않아야합니다. 그냥 이름에 대한 참조가 필요합니다.

어떻게이 ManyToOne 관계를 사용할 수 있지만 이름의 문자열을 그냥 지나치시겠습니까?

답변

1

이 열을 문자열 값으로 처리하면 @ManyToOne 매핑을 정의하고 @JoinColumn을 사용할 필요가 없습니다. @Column으로 표시하십시오.

외래 키 제약 조건을 처리하려면 DAO에서 SQLException을 잡아야합니다.

편집 : 외부 테이블에이 키가 없으므로이 예외가 발생합니다. 먼저 TranscriptionService 테이블에 행을 만들어야합니다.

+0

나는 실제 오류가 발생하지 않기 때문에 나는 그것을 이해하고 있지만 그것을 잡을 수있는 방법은 없다는 것을 알고있다. 도우미가 오류 메시지를 표시 한 다음 최대 절전 모드로 403을 반환하고 있습니다. 문자열에 특정 작업을 중지시키는 다른 유효성 검사가 있지만 유효성 검사 예외가 throw되지 않습니다. 도우미가 코드를 이전에 중지하도록합니다 ... 어떤 아이디어입니까? ('ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper ......') – fl0shizzle

+0

persist() 또는 update()와 full stacktrace를하는 코드 어딘가에 붙여 넣기하십시오. –

+0

스택 트레이스 : https://paste.ee/p/uIlUj – fl0shizzle

관련 문제