0

一対多の関係で困っています。ユーザー user_company (ユーザーを会社に関連付けます。ユーザーは複数の会社を持つことができます) とユーザー役割 (ユーザーはさまざまな会社でさまざまな役割を持つことができます) を持っています。問題は、ユーザー ロールが最初のユーザーでのみ読み込まれることです。他のユーザーをテストすると、ユーザー ロールは null になります。本当に奇妙です。私には 10 人のユーザーがいますが、最初の 1 人しか機能しません。コードは次のとおりです。

ユーザー:

@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 14)
@Column(name = "user_name")
private String userName;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 14)
@Column(name = "user_password")
private String userPassword;
@Size(max = 1)
@Column(name = "user_logged")
private String userLogged;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "userCompanyUserName")
private Collection<UserCompany> userCompanyCollection;

ユーザー会社:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "user_company_id")
private Integer userCompanyId;
@JoinColumn(name = "user_company_user_name", referencedColumnName = "user_name")
@ManyToOne(optional = false)
private Users userCompanyUserName;
@JoinColumn(name = "user_company_company", referencedColumnName = "company_id")
@ManyToOne(optional = false)
private Companies userCompanyCompany;
/*
 @JoinColumns({
 @JoinColumn(name = "user_company_user_roles", referencedColumnName = "user_role_id"),
 @JoinColumn(name = "user_company_id", referencedColumnName = "user_role_company_id", insertable = false, updatable = false)
 })*/
@JoinColumns({
    @JoinColumn(name = "user_company_user_roles", referencedColumnName = "user_role_id"),
    @JoinColumn(name = "user_company_id", referencedColumnName = "user_role_company_id", insertable = false, updatable = false)
})
@ManyToOne(optional = false)
private UserRoles userCompanyUserRoles;

ユーザーの役割:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "userCompanyUserRoles")
private Collection<UserCompany> userCompanyCollection;
private static final long serialVersionUID = 1L;
@EmbeddedId
protected UserRolesPK userRolesPK = new UserRolesPK();
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 50)
@Column(name = "user_role_name")
private String userRoleName;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 200)
@Column(name = "user_role_description")
private String userRoleDescription;

データについて: test1、test2、test3... という名前の 10 人のユーザーがいます。user_company の 10 レコードがあります。すべてのユーザーを company1 と userrole1 に関連付けます。データは基本的に 10 と同じです。そのため、test1 だけが機能するのは非常に奇妙だと思います。

すべての助けを前もって感謝します。

よろしく、ダニエル

4

1 に答える 1