Ich arbeite mit der letzten Version von playframework (2.0.4) und dem Ebean ORM. Hier ist meine vereinfachte Db-SchemaEbean - Composite-Primärschlüssel, der Fremdschlüssel enthält
TABLENAME (FIELD_NAME (, ...))
User (id)
Group (id)
UserGroup (user_id, group_id, is_active)
Ich mag würde meine Einheit Modelle, wie diese erstellen:
@Entity
public class UserGroup extends Model {
private static final long serialVersionUID = 1L;
@EmbeddedId
public UserGroupPK pk;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", insertable = false, updatable = false)
public User user;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "group_id", insertable = false, updatable = false)
public Group group;
}
@Embeddable
public class UserGroupPK implements Serializable{
private static final long serialVersionUID = 1L;
public Long userId;
public Long groupId;
public UserGroupPK(Long userId, Long groupId) {
this.userId = userId;
this.groupId = groupId;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final UserGroupPK other = (UserGroupPK) obj;
if ((this.userId == null) ? (other.userId != null) : !this.userId.equals(other.userId)) {
return false;
}
if ((this.groupId == null) ? (other.groupId != null) : !this.groupId.equals(other.groupId)) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 3;
hash = 89 * hash + (this.userId != null ? this.userId.hashCode() : 0);
hash = 89 * hash + (this.groupId != null ? this.groupId.hashCode() : 0);
return hash;
}
}
Ist es das Richtige für Sie. Und wenn es für diese Zwischentabelle in Ordnung ist, was ist mit der Entität Benutzer und Gruppe? Danke im Voraus.
Mapping weise, das ist in Ordnung. Aber viel Glück beim Finden eines Finders für diese Klasse. Ich habe es nie geschafft, Ebeans normal mit zusammengesetzten Schlüsseln arbeiten zu lassen. – kaqqao