Hi, i'm in tomcat and i have a ManyToOne relation. I get a NPE using the relation between both entities (Post of a blog and its comments).
It seems to work in standalone but not Tomcat so i guess there is something specific, can you help me to look where i should? Does it need some Jndi things? I enhanced entities with the maven plugin like it: <plugin> <groupId>org.apache.openjpa</groupId> <artifactId>openjpa-maven-plugin</artifactId> <version>2.2.0-SNAPSHOT</version> <configuration> <includes>org/superbiz/model/*.class</includes> <addDefaultConstructor>true</addDefaultConstructor> <enforcePropertyRestrictions>true</enforcePropertyRestrictions> </configuration> <executions> <execution> <id>enhancer</id> <phase>process-classes</phase> <goals> <goal>enhance</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>org.apache.openjpa</groupId> <artifactId>openjpa</artifactId> <version>2.0.1</version> </dependency> </dependencies> </plugin> Here are entities: ============ Post.java package org.superbiz.rest.model; import javax.annotation.PostConstruct; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.validation.Valid; import javax.validation.constraints.NotNull; import javax.validation.constraints.Past; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import java.util.ArrayList; import java.util.Date; import java.util.List; @Entity @NamedQueries({ @NamedQuery(name = "post.list", query = "select p from Post p") }) @XmlRootElement(name = "post") public class Post { @Id @GeneratedValue private long id; @Past private Date created; @NotNull @Size(min = 1) private String title; @NotNull @Size(min = 1) @Lob private String content; @ManyToOne @Valid private User user; @OneToMany(mappedBy = "post", cascade = CascadeType.ALL) private List<Comment> comments; @PostConstruct public void create() { created = new Date(); } public Post title(final String title) { this.title = title; return this; } public Post content(final String content) { this.content = content; return this; } public Post user(final User user) { this.user = user; return this; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public List<Comment> getComments() { if (comments == null) { comments = new ArrayList<Comment> (); } return comments; } public void setComments(List<Comment> comments) { this.comments = comments; } public void addComment(final Comment comment) { getComments().add(comment); } public Date getCreated() { return created; } public void setCreated(Date created) { this.created = created; } } ============ Comment.java package org.superbiz.rest.model; import javax.annotation.PostConstruct; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.validation.Valid; import javax.validation.constraints.NotNull; import javax.validation.constraints.Past; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import java.util.Date; @Entity @NamedQueries({ @NamedQuery(name = "comment.list", query = "select c from Comment c") }) @XmlRootElement(name = "comment") public class Comment { @Id @GeneratedValue private long id; @Past private Date created; @NotNull @Size(min = 1) private String author; @NotNull @Size(min = 1) @Lob private String content; @ManyToOne(optional = false) @Valid private Post post; @PostConstruct public void create() { created = new Date(); } public Comment author(final String author) { this.author = author; return this; } public Comment content(final String content) { this.content = content; return this; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public Post getPost() { return post; } public void setPost(Post post) { this.post = post; } public Date getCreated() { return created; } public void setCreated(Date created) { this.created = created; } } - Romain