一对多关系,只加载第一条记录

时间:2013-06-11 02:02:00

标签: java jpa one-to-many

我遇到了一对多的关系。我有一个用户,user_company(将用户与公司联系起来,用户可以拥有多家公司)和用户角色(用户可以在不同的公司中拥有不同的角色)。问题是用户角色只与第一个用户一起加载。如果我测试任何其他用户,则用户角色为null。这真的很奇怪,我有10个用户,只有第一个工作。这是代码:

用户:

@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;

关于数据: 我有10个用户,名为:test1,test2,test3 .... 我有10条user_company记录。它们将所有用户与company1和userrole1相关联。 对于10,数据基本相同,这就是为什么我觉得只有test1工作才真的很奇怪。

提前感谢所有帮助。

此致 丹尼尔

1 个答案:

答案 0 :(得分:0)

启用记录SQL生成的检查。如果它是正确的,直接在数据库上执行它,看看你是否得到了你期望的结果。

您是在测试中创建数据还是存在?可能是您在创建数据时损坏了缓存。确保正确维护双向关系。