Hibernate createSQLQuery在WHERE子句中连接多个查询

时间:2017-08-30 02:30:17

标签: java hibernate oracle12c

我试图在多个列中执行SELECT要查明姓氏中是否有姓氏连接的名称,是否存在于名称中的名称,名字和姓氏在列中分开。

query = session.createSQLQuery("SELECT * FROM PEOPLE WHERE NAME || ' ' || FIRST_NAME || ' ' || LAST_NAME AS NOMBRE_COMPLETO LIKE :COMPLETE_NAME").setParameter("COMPLETE_NAME","%"+ nameComplete +"%");

这是抛出NullPointerException。

我可以做什么样的事情。

我正在使用Oracle 12c。

1 个答案:

答案 0 :(得分:2)

您的NPE很可能与SQL无关,可能您的-- Insert any new records INSERT INTO [Valid State](Id,Name, IsActive) SELECT StateId, Name FROM LinkedServer.database.schema.[Valid State] SRC WHERE NOT EXISTS ( SELECT * FROM [Valid State] TGT WHERE TGT.ID = SRC.StateID ) -- Update any existing records UPDATE TGT SET Name = SRC.Name FROM [Valid State] TGT INNER JOIN LinkedServer.database.schema.[Valid State] SRC ON SRC.StateID = TGT.ID 为空。

无论哪种方式,这不是你创建那个查询的方式,如果我理解正确,你想要找到第一个名字+姓氏是否像你给定的参数一样,也许也就是名字列,不完全确定你是不是的意思。

在这种情况下,查询必须类似于:

session

您可以在此处查看CONCAT doc(至少为mysql):https://www.w3schools.com/sql/func_mysql_concat.asp

基本上我们只是在名字和姓氏之间添加一个空格。

上述查询将检查列SELECT * FROM PEOPLE WHERE NAME LIKE :COMPLETE_NAME AND CONCAT(FIRST_NAME, " ", LAST_NAME) AS NOMBRE_COMPLETO LIKE :COMPLETE_NAME 是否为LIKE name以及complete_namefirst_name之间的连接是否为LIKE last_name