Mit @OneToOne in PlayFramework 2 / Ebean ORM, wo die Kinder und Eltern mit demselben Primärschlüssel
Gibt es zwei Modelle:
models/User.java
@Entity
@Table(name="users")
public class User extends Model
{
@Id
public int user_id;
public String firstName;
public String lastName;
@OneToOne
@PrimaryKeyJoinColumn
public UserProfile profile;
public static Finder<Integer,User> find = new Finder<Integer,User>( Integer.class, User.class );
}
models/UserProfile.java
@Entity
@Table(name="user_profiles")
public class UserProfile extends Model
{
@Id
public int user_id;
public String bio;
@OneToOne(mappedBy = "user_id")
public User user;
public static Finder<Integer,UserProfile> find = new Finder<Integer,UserProfile>( Integer.class, UserProfile.class );
}
einige Daten:
INSERT INTO users VALUES(1,"Joe","Bloh");
INSERT INTO users VALUES(2,"Maria","Luis");
INSERT INTO user_profiles VALUES(1, "programmer");
INSERT INTO user_profiles VALUES(2, "tester");
und denselben code, der holt sich das Profil von einem user:
User user = User.find.byId(2);
UserProfile profile = UserProfile.find.byId(1);
was löst die Ausnahme:
javax.persistence.PersistenceException: Error on models.UserProfile.user. mappedBy property [models.UserBad.user_id]is not a OneToOne?
Wie kann man zwei Modelle teilen sich den gleichen Primärschlüssel in Ebean ORM, und haben eine @OneToOne Beziehung ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich es, die Verbände sollten:
models/User.java
models/UserProfile.java