Java Springboot扫描父实体

Java Springboot扫描父实体,java,spring-boot,api,rest,inheritance,Java,Spring Boot,Api,Rest,Inheritance,我正在为一个旧应用程序开发RESTAPI 当我启动我的服务并开始使用它时,我有一个例外: java.lang.IllegalArgumentException:PersistentEntity必须具有 标识符属性 实际上,我的对象上没有id字段,而是它的父对象上的id字段 @Entity public class Object extends AbstractObject { ... } @MappedSuperclass @Access(AccessType.PROPERTY) public

我正在为一个旧应用程序开发RESTAPI

当我启动我的服务并开始使用它时,我有一个例外:

java.lang.IllegalArgumentException:PersistentEntity必须具有 标识符属性

实际上,我的对象上没有id字段,而是它的父对象上的id字段

@Entity
public class Object extends AbstractObject {
...
}

@MappedSuperclass
@Access(AccessType.PROPERTY)
public abstract class AbstractObject {

    protected ObjectProperty<Long> id = new SerializableSimpleObjectProperty<>();

    public classAbstractObject () {
    }

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "idgen")
    public Long getId() {
        return id!=null?id.get():null;
    }

    public ObjectProperty<Long> idProperty() {
        return id;
    }

    public void setId(Long id) {
        this.id.set(id);
    }
我错过了什么吗


谢谢你的帮助

如果直接注释id属性,而不是getter方法,会怎么样<代码>@Id@GeneratedValue(strategy=GenerationType.SEQUENCE,generator=“idgen”)受保护的ObjectProperty Id我不确定@ID是否可以是ObjectProperty类型,但请先尝试@ruhul hint。而不是ObjectProperty直接尝试Long。谢谢大家确实是ObjectProperty的问题,但它在我的客户端工作,我不明白为什么我们没有相同的行为。因为对我来说,Hybernate应该调用methode“Long getId()”,在内部我可以做我想做的事情(对于setter“void setId(Long id)”),但似乎不是这样。。。谢谢你的帮助,我已经删除了这个ObjectProperty作为我的Id,一切都很好!如果直接注释id属性,而不是getter方法,会怎么样<代码>@Id@GeneratedValue(strategy=GenerationType.SEQUENCE,generator=“idgen”)受保护的ObjectProperty Id我不确定@ID是否可以是ObjectProperty类型,但请先尝试@ruhul hint。而不是ObjectProperty直接尝试Long。谢谢大家确实是ObjectProperty的问题,但它在我的客户端工作,我不明白为什么我们没有相同的行为。因为对我来说,Hybernate应该调用methode“Long getId()”,在内部我可以做我想做的事情(对于setter“void setId(Long id)”),但似乎不是这样。。。谢谢你的帮助,我已经删除了这个ObjectProperty作为我的Id,一切都很好!
@RestController
@RequestMapping("/object")
public class ObjectController {

    @Autowired
    private ObjectRepository objectRepository;

    @GetMapping
    public Object getObjects() {
        return this.objectRepository.findAll();
    }
    
    @RequestMapping(method = RequestMethod.GET, path="/getByField", params = {"field"})
    public Object getByField(@QueryParam("field") String field) {
        return this.objectRepository.findByField(field);
    }