我想我应该试试Spring Roo,所以今天我遇到了很多新的有趣的问题。希望你们能帮我解决最新的问题。Roo有能力为你的实体生成集成测试,但对我来说大多数测试都失败了。最常见的失败是某种形式的约束冲突,比如将null插入到非null字段。我意识到我的实体上没有任何东西反映数据库中的这些约束。
例如,属性实体与Term具有多对一关系
//bi-directional many-to-one association to Term
@ManyToOne
@JoinColumn(name="TERM_ID",)
private Term term;将其更改为:
//bi-directional many-to-one association to Term
@ManyToOne(optional=false)
@JoinColumn(name="TERM_ID", nullable=false)
private Term term;仍然会导致测试失败,所以不确定Roo是否足够聪明,可以自动创建术语实体。
所以我的问题是,我是否可以修改这些生成的测试,而不是Roo在重启时覆盖它们?或者Roo应该能够设置非空值?
关于集成测试以及您可以在任何地方对生成的类做什么的文档真的很少。我至少可以找到:)
谢谢
发布于 2012-10-12 17:00:54
我自己偶然发现了这个问题。虽然这个问题已经提出两年了,但我希望问题发起者现在也已经找到了解决方案。希望我的答案能帮助其他人。
显然,Roo使用来自JSR303的验证而不是JPA约束来生成正确的集成测试。
JPA对数据库施加约束,但不对应用程序逻辑施加约束。为了让Roo生成正确的集成测试,您还必须指定与应用程序逻辑相同的约束。为了同时拥有两者,只需使用JPA和JSR303中的注释即可。
...
import javax.validation.constraints.NotNull;
....
@ManyToOne(optional=false)
@JoinColumn(name="TERM_ID", nullable=false)
@NotNull
private Term term;https://stackoverflow.com/questions/3980095
复制相似问题