Hello gurus. I'm trying to design an application that allows users to rate
movies with a "star system" of 1-5 stars. For that I need a user table, a
movie table, and an X-ref table to link them as each user can rate multiple
movies and each movie can be rated by multiple users. I can't define this
relationship correctly with JPA and I need your help. Has anyone defined
this kind of relationship or know where a tutorial/example is? Here is what
I have which throws the following error:
javax.persistence.PersistenceException: App Engine ORM does not support
multiple parent key provider fields.
package com.app.movieRatings.model;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import com.google.appengine.api.datastore.Key;
@Entity
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Key id;
private String userId;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<UserMovieXRef> UserMovieXRefs = new
ArrayList<UserMovieXRef>();
// Getters and setters...
}
package com.app.movieRatings.model;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import com.google.appengine.api.datastore.Key;
@Entity
public class Movie {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Key id;
private String name;
@OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
private List<UserMovieXRef> UserMovieXRefs = new
ArrayList<UserMovieXRef>();
// Getters and setters...
}
package com.app.movieRatings.model;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import com.google.appengine.api.datastore.Key;
@Entity
public class UserMovieXRef {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Key id;
private int starRating;
@ManyToOne(fetch = FetchType.LAZY)
private User user;
@ManyToOne(fetch = FetchType.LAZY)
private Movie movie;
// Getters and setters...
}
--
You received this message because you are subscribed to the Google Groups
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.