一対多の関係で困っています。ユーザー 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 だけが機能するのは非常に奇妙だと思います。
すべての助けを前もって感謝します。
よろしく、ダニエル