저는 Oracle 10g 데이터베이스의 ORM 레이어로 Fluent NHibernate를 사용하고 있습니다. 레코드를 삽입 할 때 이전 삽입 트리거를 사용하여 고유 ID (시퀀스 포함)를 만듭니다.Int64 to NUMBER (18) ID 변환 오류
-- Within the trigger
SELECT myseqgen.nextval into :NEW.ID FROM DUAL;
코드의 ID 속성은 더 나은 우리가 데이터베이스 (공통 라이브러리)에있는 것과 일치하는 진수로 변경할 수 없습니다 긴 (INT64)입니다. 다음과 같이 나는이 매핑 한 다음과 같이 나는이 부동산에 대한 사용자 정의 유형을 만든 반면
this.Id(x => x.Id, "ID")
.CustomSqlType("NUMBER(18)")
.CustomType(typeof(IdCustomType))
.GeneratedBy.TriggerIdentity();
가, 내가 있기 때문에 데이터베이스에 필요로한다고 생각하지 마십시오 ID가 구성됩니다
CREATE TABLE "SOME_SCHEMA"."MY_TABLE"
("ID" NUMBER(18,0), -- 18 means "anything up to 64 bit integer"
...
그러나 흥미로운 점은 내 IdCustomType 클래스의 NullSafeSet 메서드 내에서 "value"매개 변수가 소수로 전달된다는 것입니다.
...뿐만 아니라 그 NHProf 확인시 삽입 문이 걱정 스레되고 있지만 : INSERT 문 후
INSERT INTO MY_TABLE
(COL_ONE,
COL_TWO,
COL_THREE,
COL_FOUR,
COL_FIVE,
COL_SIX,
COL_SEVEN)
VALUES ('param one' /* :p0 */,
'param two' /* :p1 */,
NULL /* :p2 */,
'param three' /* :p3 */,
TIMESTAMP '2012-01-01 00:00:00.00' /* :p4 */,
'22' /* :p5 */,
'''81189'' [Type: String (5)], :nhIdOutParam = NULL' /* :p6 */) -- WHAT!?
returning ID into :nhIdOutParam
은 내 동시성 식별자의 자동 선택이 호출됩니다
SELECT someRow_.CONCURRENCY_COL as CON_2_1_
FROM MY_TABLE someRow_
WHERE someRow_.ID = 5836738 /* :p0 */
... 아무것도 찾을 수 없습니다.
아무에게도 제안 사항이 있습니까?
덕분 롭
성공적으로 삽입했는지 확인 했습니까? – Firo