我正在自定义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
答案 0 :(得分:1)
你可以写
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