Ich habe vier Klassen; Usergroup, Useraccount, Rolle, UserGroupRoleRelation und meine db ist IBM DB2Hibernate erstellen Alias auf viele zu viele Liste
@Entity
@Table(name = "USER_GROUP")
public class UserGroup implements Serializable {
@Id
@Column(name = "USER_GROUP_ID")
@GeneratedValue
private Long id;
......
..
@OneToMany(mappedBy = "userGroup", cascade = CascadeType.ALL, orphanRemoval = true)
private List<UserGroupRoleRelation> userAccountsRole = new ArrayList<UserGroupRoleRelation>();
}
@Entity
@Table(name = "ROLE")
public class Role implements Serializable {
@Id
@Column(name = "ROLE_ID")
@GeneratedValue
private Long id;
......
@OneToMany(mappedBy = "role")
private List<UserGroupRoleRelation> userAccountInGroup = new ArrayList<UserGroupRoleRelation>();
}
@Entity
@Table(name = "USER_GROUP_ROLE_LINE", uniqueConstraints = @UniqueConstraint(columnNames = { "ROLE_ID", "USER_GROUP_ID" }))
public class UserGroupRoleRelation {
@Id
@GeneratedValue
@Column(name = "RELATION_ID")
private Long relationId;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "USER_ACCOUNT_USER_GROUP_ROLE_LINE", joinColumns = { @JoinColumn(name = "RELATION_ID") }, inverseJoinColumns = { @JoinColumn(name = "USER_ID") }, uniqueConstraints = @UniqueConstraint(columnNames = { "USER_ID", "RELATION_ID" }))
private List<UserAccount> userAccountList = new ArrayList<UserAccount>();
@ManyToOne
@JoinColumn(name = "USER_GROUP_ID")
private UserGroup userGroup;
@ManyToOne
@JoinColumn(name = "ROLE_ID")
private Role role;
}
@Entity
@Table(name = "USER_ACCOUNT")
public class UserAccount implements Serializable {
@Id
@Column(name = "USER_ID")
@GeneratedValue
private Long id;
.....
@ManyToMany(mappedBy = "userAccountList", cascade = CascadeType.ALL)
private List<UserGroupRoleRelation> rolesInGroup = new ArrayList<UserGroupRoleRelation>();
}
Ich möchte Benutzergruppen eines Benutzer-Account finden und ich bereit, ein Verfahren mit den Kriterien. es ist wie;
@Override
@Transactional
public List<UserGroup> findUserGroupOf(UserAccount userAccount) {
Criteria criteria = getSession().createCriteria(UserGroup.class);
criteria.createAlias("userAccountsRole", "userAccountsRole");
criteria.add(Restrictions.eq("userAccountsRole.userAccountList", userAccount));
return criteria.list();
}
Aber wenn ich versuche Ergebnis dieser Methode zu bekommen, gibt DB2 mir DB2 SQL Error: SQLCODE=-313, SQLSTATE=07004, SQLERRMC=null, DRIVER=3.63.75
Wahrscheinlich seine über Alias Schaffung von vielen zu vielen Beziehung. Ich weiß nicht, was ich tun soll, um Alias auf vielen zu vielen zu schaffen. Wie kann ich das Ergebnis dieser Funktion erhalten?
Thank
Es tut mir leid, es war wie das Finden von Usergroup eines Useraccount, nicht finden Useraccount einer Gruppe. Ich werde einen Useraccount geben und es wird seine Benutzergruppen finden. Kannst du erzählen, wie es ist? –