Java Springboot扫描父实体
我正在为一个旧应用程序开发RESTAPI 当我启动我的服务并开始使用它时,我有一个例外: java.lang.IllegalArgumentException:PersistentEntity必须具有 标识符属性 实际上,我的对象上没有id字段,而是它的父对象上的id字段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
@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);
}