我定义了一个Versioned
接口,期望我可以在任何我想使用 JPA 版本控制功能的持久化实体上实现它(例如,比较空中冲突的版本,更新时自动递增)。
public interface Versioned {
@Version
int getRevision();
}
这并没有节省太多(如果有的话)编码,但它也为我提供了一个我计划稍后使用的标记界面。
public class Foo implements Versioned {
private int revision;
@Override
public int getRevision() {
return revision;
}
}
@Version
在方法上是允许的,我希望 Foo 从Versioned
接口继承该特性。情况似乎并非如此。我可以在数据库中更新我的实例Foo
,但修订号不会自动更改。
但是,如果我@Version
向实现添加注释,它会按预期工作:
@Version
private int revision;
我没有被困住——我可以获得我需要的功能。我只是好奇:是否有一个“技巧”可以让它与接口方法上的注释一起正常工作?或者有人可以指出我为什么这不能像我预期的那样工作的文档吗?