ID가 SQL Server db (스키마를 변경할 수없는 타사 db)에 생성 된 GUID 인 ID를 가진 엔티티가 있으므로 필드가 정의됩니다 ; 삽입 된 행을 검색 할 때 삽입이 실패합니다.
@Id
@GenericGenerator(name="generator", strategy="guid", parameters = {})
@GeneratedValue(generator ="generator")
@Column(name="FarmID")
public String getId() {
return id;
}
I 새로운 엔티티를 생성하고 저장
가 상기 ID는 제 올바르게 NEWID를 호출 GUIDGenerator() 의해 생성되고, 그 행의 매개 변수 값으로 상기 생성 된 ID를 이용하여 삽입된다. 그러나 삽입 후 Hibernate는 새로 삽입 된 행을 검색하려고 시도하지만 실패하고 빈 id 값을 사용하고있는 것으로 밝혀졌다. 여기에는 추적 로그가있다.[main] AbstractBatcher DEBUG about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
[main] SQL DEBUG
select
newid()
[main] AbstractBatcher TRACE preparing statement
[main] GUIDGenerator DEBUG GUID identifier generated: 5B5495B4-FFE3-4112-B079-4FB799320BA7
[main] AbstractBatcher DEBUG about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
[main] AbstractBatcher TRACE closing statement
[main] ConnectionManager TRACE registering flush begin
[main] AbstractBatcher DEBUG about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
[main] SQL DEBUG
insert
into
Farm
(FarmBusinessID, FarmName, PortalFarm, FarmID)
values
(?, ?, ?, ?)
[main] AbstractBatcher TRACE preparing statement
[main] BasicBinder TRACE binding parameter [1] as [VARCHAR] - F2542B84-82E4-4DF6-BDBB-E830BFE5DDC1
[main] BasicBinder TRACE binding parameter [2] as [VARCHAR] - XXXXXX XXXXX (XXX)
[main] BasicBinder TRACE binding parameter [3] as [BIT] - true
[main] BasicBinder TRACE binding parameter [4] as [VARCHAR] - 5B5495B4-FFE3-4112-B079-4FB799320BA7
[main] AbstractBatcher DEBUG about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
[main] AbstractBatcher TRACE closing statement
[main] ConnectionManager TRACE registering flush end
[main] HQLQueryPlan TRACE find: select id from agronomy.model.hub.Farm where id = :id
[main] AbstractBatcher DEBUG about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
[main] SQL DEBUG
select
farm0_.FarmID as col_0_0_
from
Farm farm0_
where
farm0_.FarmID=?
[main] AbstractBatcher TRACE preparing statement
[main] BasicBinder TRACE binding parameter [1] as [VARCHAR] -
[main] AbstractBatcher DEBUG about to open ResultSet (open ResultSets: 0, globally: 0)
[main] AbstractBatcher DEBUG about to close ResultSet (open ResultSets: 1, globally: 1)
[main] AbstractBatcher DEBUG about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
[main] AbstractBatcher TRACE closing statement
[main] JDBCExceptionReporter WARN SQL Error: 8169, SQLState: S0002
[main] JDBCExceptionReporter ERROR Conversion failed when converting from a character string to uniqueidentifier.
은 내가 명시 적으로 마지막 SELECT (즉, 실패)를 호출하고있어 알고 아니에요, 그래서 내가 실패 왜 볼 볼 수있는 확실하지 않다. SQL 오류는 "빈 문자열을 고유 식별자 값으로 사용할 수 없으므로"의미가 통용됩니다.