gpt4 book ai didi

java - @Id 字段是否在父类(super class)中?

转载 作者:行者123 更新时间:2023-11-29 06:36:39 25 4
gpt4 key购买 nike

我有一个仅提供标识的基类:

    public abstract class Identifable<T> {
@Id
private T id = null;

public T getId() {
return id;
}

public void setId(T id) {
this.id = id;
}

public boolean hasId() {
return id != null;
}
}

和几个扩展它的子类:

@Entity
@Cache
public class MyEntity extends Identifable<String> {
/* some specific attributes and methods */
}

我得到一个 java.lang.IllegalStateException: @Id field 'id' in com.mypkg.MyEntity must be of type Long, long, or String

为什么? Objectify 看不到继承的 @Id 字段?谢谢

最佳答案

原因:

Objectify 仅在运行时使用反射检查类型。因为type erasure所有无界类型参数在编译期间都转换为 Object 类型,这是 objectify 看到并提示的。

解决方法:

id 字段使用具体类型。可能按照@Anthony 的提议将其移至子类。

关于java - @Id 字段是否在父类(super class)中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452563/

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