小编roy*_*yal的帖子

我可以请求JDBCTemplate扩展list参数以用于in()子句吗?

我可以这样做:

select * from mytable m where m.group_id in (?)
Run Code Online (Sandbox Code Playgroud)

...并传入要扩展到我的参数的列表或参数数组,即:

select * from mytable m where m.group_id in (1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

具体来说,我使用的是Spring和JdbcTemplate/SimpleJdbcTemplate类.

java spring jdbc spring-jdbc

9
推荐指数
2
解决办法
2万
查看次数

有没有办法抵制在使用Django的orm时只检查id存在的不必要的连接?

在例子中.如果我有一个模型人有一个母领域,这是一个外键..以下是给我的:

p = Person.object.get(id=1)
if p.mother_id:
    print "I have a mother!"
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我们发出了一个查询.我已经欺骗了Django而不是通过使用_id字段而不是mother.id来获取母亲.但如果我要过滤所有没有母亲的人:

Person.objects.filter(mother=None)
Person.objects.filter(mother__id=None)
Person.objects.filter(mother__isnull=True)
Person.objects.filter(mother__id__isnull=True)
Run Code Online (Sandbox Code Playgroud)

所有这些都不必要地加入相关表中.我无法引用_id列,因为它们不是字段..因此以下任一情况都会失败:

Person.objects.filter(mother_id__isnull=True)
Person.objects.filter(mother_id=None)
Run Code Online (Sandbox Code Playgroud)

有没有办法让我构建一个querySet来检查外键列中是否存在值而不会产生连接?

提前致谢.

编辑(已回答): 感谢Bernd,他对Daniel的回答发表了评论,但事实证明,这种解决方法对于没有母亲的返回人员来说非常出色,而且没有发出不必要的联接:

Person.objects.exclude(mother__isnull=False)
Run Code Online (Sandbox Code Playgroud)

编辑(更多细节):

我还应该提一下,我发现当FK关系可以为空时,这种行为实际上似乎只是在它的头部.奇怪,但是真的.

python django

6
推荐指数
1
解决办法
141
查看次数

标签 统计

django ×1

java ×1

jdbc ×1

python ×1

spring ×1

spring-jdbc ×1