我正在自定义由hibernate生成的插入SQL,并遇到了问题。当Hibernate自己生成查询时,它将数据插入表的前两列,但这会导致数据库错误,因为表的所有四列都是不可为空的。为了正确执行插入,它必须将相同的数据插入到新记录的两列中。这意味着我需要Hibernate将相同的数据绑定到我正在编写的查询(准备好的语句)中的两个不同的参数上。
是否有一些SQL语法可让我以与绑定到绑定语句不同的顺序引用绑定到已准备语句的匿名参数?
细节
REF_USER_PAGE_XREF ---------------------------------------- PK FK1 | NETWORK_ID | VARCHAR2(100) PK FK1 | PAGE_PATH | VARCHAR2(1000) | USER_LAST_UPDT | VARCHAR2(100) | TMSP_LAST_UPDT | DATE insert into REF_USER_PAGE_XREF( NETWORK_ID, PAGE_PATH, TMSP_LAST_UPDT, USER_LAST_UPDT) values ( ?, /* want to insert the same data here */ ?, ?, /* and here */ (select to_char(sysdate, 'DD-MON-YY') from dual)
我想将相同的数据插入第一个和第三个匿名参数。
最终答案 (基于@mdma的答案)
insert into REF_USER_PAGE_XREF( NETWORK_ID, PAGE_PATH, USER_LAST_UPDT, TMSP_LAST_UPDT) select Param1, Param2, Param1, (select to_char(sysdate, 'DD-MON-YY') from dual) from (select ? as Param1, ? as Param2 from dual) params
你可以写
INSERT INTO REF_USER_ROLE_XRE SELECT Param1, Param2, Param1, (select to_char(sysdate, 'DD-MON-YY') from dual) FROM (SELECT ? AS Param1, ? AS Param2) params