3

我们最近将我们的代码库从 2005 版本升级到了最新版本的 hibernate。

因此,我们发现我们的一些包中的代码覆盖率显着降低。这些包几乎完全是映射到休眠对象的 POJO,区别似乎在于 getter 和 setter 的覆盖范围。这些对象中的大多数都没有直接进行单元测试,因此之前的覆盖大部分来自它们在某些集成测试中的使用,导致 hibernate 命中这些 getter 和 setter。

有没有人看到类似的事情发生?hibernate 填充那些可以解释这一点的对象的方式是否发生了变化?

大多数字段都设置为lazy=false,所以这可能是不可能的。

我们正在使用 testng、cobertura 和 jdk 1.6。

4

2 回答 2

2

我不是专家,但也许最新版本的hibernate会在你的类的字段中注入值,而以前的版本使用getter和setter ...

你把你的注释放在哪里了?

在田野上

@Id private Long id;

还是方法?

@Id public Long getId() { return id; }
于 2011-10-21T09:48:38.493 回答
1

是否有人更改了 xml 中的某些内容以更改对字段的访问权限,例如

<property name="xxx" ... access="field"/>

还是像这样在全球范围内?

<hibernate-mapping ... default-access="field">

默认情况下,hibernate 的访问设置为属性,因此应该在提供它们的地方使用访问器。

于 2011-10-21T10:14:48.797 回答