私は4つのクラスを持っています。 UserGroupに、UserGroupRoleRelationと私のDBは、IBM DB2Hibernateはたくさんのリストにエイリアスを作成します
@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>();
}
あるUserAccountの、役割は、私はUserAccountののユーザグループを見つけたいと私は判断基準と方法を用意しました。そのような;
@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();
}
しかし、私は、そのメソッドの結果を取得しようとすると、DB2は、多くの関係に多くの上のエイリアスを作成する方法について、そのおそらく私にDB2 SQL Error: SQLCODE=-313, SQLSTATE=07004, SQLERRMC=null, DRIVER=3.63.75
を与えます。私は多くの人にエイリアスを作成するために何をすべきか知っていません。どうすればその機能の結果を得ることができますか?
ありがとう
私は、ユーザーアカウントのusergroupを見つけて、グループのユーザーアカウントを見つけられなかったのは残念です。私はuseraccountを与え、そのusergroupsを見つけるでしょう。それが何であるかを教えてもらえますか? –