我用电脑有问题 @MappedSuperclass
注解。
这是一个精简版,显示了我的困惑。
超类:
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
@MappedSuperclass
public class FooBase {
@Id
protected Long id;
// Getters/setters.
}
子类:
import javax.persistence.Entity;
@Entity
public class Foo extends FooBase {
String bar;
// Getters/setters.
}
我一定是错过了什么。甚至intellij也报道了 Foo
班
持久实体“foo”应具有主键
当我打电话的时候 JpaRepository#findAll()
,中的字段 Foo
在json响应实体中不存在。
[
{
"id": 1,
}
]
5条答案
按热度按时间vnjpjtjt1#
为了使子类从mappedsuperclass继承字段,访问修饰符必须至少是受保护的,或者在任何情况下都是公共的。
iibxawm42#
尝试设置
bar
属性到private
.jpa调用返回的对象可能是代理对象。有可能
bar
属性被直接访问,而不是在序列化为json时使用getter。shyt4zoc3#
通常是那个信息
持久实体“foo”应具有主键
在persistence.xml文件中未注册类时接收。虽然有些实现甚至不需要persistence.xml文件,但我注意到intelij会抱怨它,如果它不存在的话。
因此,我认为在资源文件夹中创建persistence.xml文件(如果您还没有)并设置以下内容
ltqd579y4#
感谢所有回答我问题的人。
我的问题不是为子类字段定义getter。非常愚蠢的错误。
zyfwsgd65#
检查pom文件,它应该如下所示: