gpt4 book ai didi

java - JPA实体可以从接口(interface)方法继承@Version吗?

转载 作者:行者123 更新时间:2023-11-29 03:35:24 24 4
gpt4 key购买 nike

我定义了一个 Versioned 接口(interface),期望我可以在我想使用 JPA 版本控制功能的任何持久化实体上实现它(例如,比较空中碰撞的版本,自动递增更新)。

public interface Versioned {
@Version
int getRevision();
}

这并没有节省多少(如果有的话)编码,但它也为我提供了一个标记界面,我打算稍后使用。

public class Foo implements Versioned {
private int revision;

@Override
public int getRevision() {
return revision;
}
}

@Version 允许在方法上使用,我希望 Foo 从 Versioned 接口(interface)继承该特性。情况似乎并非如此。我可以在数据库中更新我的 Foo 实例,但修订号不会自动更改。

但是,如果我向实现添加一个 @Version 注释,它会按预期工作:

    @Version
private int revision;

我没有被卡住——我可以获得我需要的功能。我只是好奇:是否有一个“技巧”可以使它与接口(interface)方法上的注释一起正常工作?或者有人可以向我指出为什么这不像我预期的那样工作的文档吗?

最佳答案

注释继承不适用于方法。来自documentation of @Inherited :

Note that this meta-annotation type has no effect if the annotated type is used to annotate anything other than a class. Note also that this meta-annotation only causes annotations to be inherited from superclasses; annotations on implemented interfaces have no effect.

关于java - JPA实体可以从接口(interface)方法继承@Version吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15835754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com