- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
错误:
System.Data.SqlClient.SqlException: Incorrect syntax near ','
代码:
IQuery permissionTypes;
if (regionIds != null && regionIds.Count > 0)
{
permissionTypes = session.CreateSQLQuery(
@"SELECT DISTINCT PT.PermissionType FROM AspNetUsers AU
INNER JOIN AspNetUserRoles AR ON AU.Id= AR.UserId
INNER JOIN dbo.AspNetRoles ANR ON ANR.Id = AR.RoleId
INNER JOIN [dbo].[tbl_RolePermissionTypeAssoc] RPT ON RPT.FK_RoleId = AR.RoleId
INNER JOIN tbl_PermissionType PT ON RPT.FK_permissionTypeId=PT.Id
WHERE AU.ID=:userId AND ANR.RegionId=:regionId")
.SetParameter("userId", userId).SetParameterList("regionId", regionIds);
}
else
{
permissionTypes = session.CreateSQLQuery(
@"SELECT DISTINCT PT.PermissionType FROM AspNetUsers AU
INNER JOIN AspNetUserRoles AR ON AU.Id= AR.UserId
INNER JOIN dbo.AspNetRoles ANR ON ANR.Id = AR.RoleId
INNER JOIN [dbo].[tbl_RolePermissionTypeAssoc] RPT ON RPT.FK_RoleId = AR.RoleId
INNER JOIN tbl_PermissionType PT ON RPT.FK_permissionTypeId=PT.Id
WHERE AU.ID=:userId AND ANR.RegionId=:regionId")
.SetParameter("userId", userId);
}
return permissionTypes.List<string>();
生成的查询:
SELECT DISTINCT PT.PermissionType
FROM AspNetUsers AU
INNER JOIN AspNetUserRoles AR ON AU.Id = AR.UserId
INNER JOIN dbo.AspNetRoles ANR ON ANR.Id = AR.RoleId
INNER JOIN [dbo].[tbl_RolePermissionTypeAssoc] RPT ON RPT.FK_RoleId = AR.RoleId
INNER JOIN tbl_PermissionType PT ON RPT.FK_permissionTypeId = PT.Id
WHERE AU.ID = @p0 AND ANR.RegionId = @p1, @p2
最佳答案
这里的重点是=
符号,它不能用于更多的参数。我们需要 IN
运算符
resluting sql包含
AND ANR.RegionId = @p1, @p2
并且在错误中报告了这种昏迷。我们需要:
AND ANR.RegionId IN (@p1, @p2)
if
部分
session.CreateSQLQuery(
@"SELECT DISTINCT PT.PermissionType FROM AspNetUsers AU
INNER JOIN AspNetUserRoles AR ON AU.Id= AR.UserId
INNER JOIN dbo.AspNetRoles ANR ON ANR.Id = AR.RoleId
INNER JOIN [dbo].[tbl_RolePermissionTypeAssoc] RPT
ON RPT.FK_RoleId = AR.RoleId
INNER JOIN tbl_PermissionType PT ON RPT.FK_permissionTypeId=PT.Id
// this is wrong
// WHERE AU.ID=:userId AND ANR.RegionId=:regionId
// we need IN
WHERE AU.ID=:userId AND ANR.RegionId IN (:regionId)
")
.SetParameter("userId", userId)
.SetParameterList("regionId", regionIds);
而且在其他部分我们使用了未传递的参数
else
部分:
session.CreateSQLQuery(
@"SELECT DISTINCT PT.PermissionType FROM AspNetUsers AU
INNER JOIN AspNetUserRoles AR ON AU.Id= AR.UserId
INNER JOIN dbo.AspNetRoles ANR ON ANR.Id = AR.RoleId
INNER JOIN [dbo].[tbl_RolePermissionTypeAssoc] RPT ON RPT.FK_RoleId = AR.RoleId
INNER JOIN tbl_PermissionType PT ON RPT.FK_permissionTypeId=PT.Id
-- here is again RegionId, but that is not passed
WHERE AU.ID=:userId AND ANR.RegionId=:regionId")
.SetParameter("userId", userId);
再次期待RegionId但没有通过
关于sql - Nhibernate CreateSQLQuery 错误 - ',' 附近的 SetParameterList 语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34059178/
我想有效地制作我的小型 Spring 项目。所以我在 hql 中使用 IN 子句而不是使用循环。 01) setParameterList() 中的问题 To use setParameterList
我有一个包含 8000 项的整数数组列表。 然后我使用 setParameterList 方法在 hql 中设置该数组列表。 只是一个示例查询 return (Integer) sessionFact
我在 Hibernate 中有 native SQL 查询: SELECT * FROM my_table where id IN (:ids) 我想替换:ids命名参数为 List . Query
我在使用 hibernate 的 setParameterList api 时遇到了一些问题。 我正在尝试将集合传递给 SQLQuery 并执行“in”子句搜索。记录存在于数据库中并执行原始查询,我能
我正在构建一个查询,我想在其中传递一个集合作为参数: List items = new LinkedList(); //adding optional items Query query = s.ge
错误: System.Data.SqlClient.SqlException: Incorrect syntax near ',' 代码: IQuery permissionTypes; if (re
我是一名优秀的程序员,十分优秀!