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 google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to