BEHOBEN: Jungs, wie @HatemJaber sagte, ich nur zu meinem preload hinzufügen fügt die Version = 0 und alles funktioniert jetzt gut. Die Version Spalte kann nicht Nullwert enthaltenSpringboot Daten Rest funktioniert nicht mit Super Klasse @MappedSuperclass
So wurde ich ein paar Tests mit springboot Daten Ruhe und alles zu tun, funktionierte gut, bis ich meine Entity Klasse wie folgt definieren:
Oberklasse:
@MappedSuperclass
public abstract class BaseEntity implements Serializable {
@Id
@GeneratedValue
private Long id;
// getters and setters and others @PrePersit @PreUpdate
}
Held :
@Entity
public class Hero extends BaseEntity {
// more boilerplate code ...
}
Find-Methode funktioniert:
{
_embedded: {
heroes: [
{
createAt: "2016-08-13T16:57:22.099+0000",
updateAt: null,
name: "Spiderman",
firstName: "Peter",
lastName: "Parker",
birthday: "1980-01-01T15:00:00.000+0000",
_links: {
self: {
href: "http://localhost:8080/rest/heroes/1"
},
hero: {
href: "http://localhost:8080/rest/heroes/1"
}
}
}
Diese erhalten von id gibt leere Seite
http://localhost:8080/rest/heroes/1
und throwns eine Nullpointer
java.lang.NullPointerException: null
at org.springframework.data.rest.webmvc.support.ETag.getVersionInformation(ETag.java:192) ~[spring-data-rest-webmvc-2.5.2.RELEASE.jar:na]
at org.springframework.data.rest.webmvc.support.ETag.from(ETag.java:76) ~[spring-data-rest-webmvc-2.5.2.RELEASE.jar:na]
at org.springframework.data.rest.webmvc.HttpHeadersPreparer.prepareHeaders(HttpHeadersPreparer.java:64) ~[spring-data-rest-webmvc-2.5.2.RELEASE.jar:na]
at org.springframework.data.rest.webmvc.RepositoryEntityController.getItemResource(RepositoryEntityController.java:352) ~[spring-data-rest-webmvc-2.5.2.RELEASE.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_102]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_102]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_102]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) ~[spring-web-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) [spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) [tomcat-embed-core-8.5.4.jar:8.5.4]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) [tomcat-embed-core-8.5.4.jar:8.5.4]enter code here
Ist das ein Fehler oder ich mache etwas falsch gemacht?
PS: nur um deutlich zu machen, alles funktioniert gut, wenn ich nicht die Super
Die NPE beschwert sich über die Spalte "@ Version". Hast du das explizit definiert? – JudgingNotJudging
Ja, ich habe eine @Version Integer-Version; Spalte auf meiner BaseEntity. Auch ich habe die Spalte auf der db create Tabelle HERO {... version integer ...} – Mike
Nach neuen Tests bin ich mir ziemlich sicher über das Problem. Wenn Sie die Version von @Version Integer verwenden; auf Superklasse (BaseEntity) oder sogar auf Hero bekommst du diese NullPointerException. – Mike