1

这可能是愚蠢的,但我一直无法找到它。我正在使用 MyBatis 3.2.2、PostgreSQL 9.2.2 和 XML 映射,尽管我在注释方面有相同的经验。我设置了一个返回对象列表的简单选择。此配置按预期工作:

<select id="getCasesBySite" parameterType="string" resultType="Case">
  select c.* from cases c
</select>

并返回 Case 对象的列表。然而,这不返回任何内容:

<select id="getCasesBySite" parameterType="string" resultType="Case">
  select c.* from cases c join siteinfo s on c.siteid = s.id where s.key=#{site}
</select>

我的映射器界面有这个:

List<Case> getCasesBySite(@Param("site") String site);

使用连接的版本的调试日志记录是:

... ==>  Preparing: select c.* from cases c join siteinfo s on c.siteid = s.id where s.key=?
... ==> Parameters: sw(String)

如果我复制上面的 SQL 并将其粘贴到我的 psql 命令行中(将 ? 替换为 'sw'),我会收到一个结果列表,所以看起来连接查询本身是可以的。

还有什么我应该做的吗?这让我发疯了。我记得在使用 PostgreSQL 时存在区分大小写的问题,但如果这是问题,我不知道如何解决它。

我可以包含更多信息。我只是不确定什么是相关的。

4

1 回答 1

0

经过多次调试,问题似乎与事务和我们的测试框架有关。我们使用 Unitils 来处理刷新测试数据,我们发现设置这个属性后:

DatabaseModule.Transactional.value.default=disabled

unitils.properties文件中,测试都按预期运行。

于 2013-04-27T20:20:08.400 回答