Я хочу использовать карту в @ OneToMany, но он бросает исключениеHibernate mappedby составного ключа
org.hibernate.MappingException: Unable to read the mapped by attribute for moduleRoles in org.caau.entity.UserModuleRole!
И вот моя сущность mapping.UserModuleRole составного использование class.if комментарий код, программа correct.Does кто-нибудь поможет мне решить?
@Entity
@Table(name = "user")
public class User{
private long id;
private Set<UserModuleRole> moduleRoles;
@Id
@Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
public long getId() {
return id;
}
@OneToMany(fetch = FetchType.EAGER,mappedBy="user")
//if use under code,program is correct,but i want to use mappedBy!
//@OneToMany(fetch = FetchType.EAGER)
//@JoinColumn(name = "user_id")
public Set<UserModuleRole> getModuleRoles() {
return moduleRoles;
}
}
здесь класс UserModuleRole
@Entity
@Table(name = "user_module_role")
@IdClass(UserModuleRolePK.class)
public class UserModuleRole{
private User user;
private ModuleRole moduleRole;
private long addUserId;
private Date addDate;
private long updateUserId;
private Date updateDate;
@Id
public User getUser() {
return user;
}
@Id
public ModuleRole getModuleRole() {
return moduleRole;
}
}
class UserModuleRolePK implements Serializable {
private static final long serialVersionUID = -9132981262254922539L;
private User user;
private ModuleRole moduleRole;
@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
public User getUser() {
return user;
}
@ManyToOne
@JoinColumns({ @JoinColumn(name = "module_id", nullable = false), @JoinColumn(name = "role_id", nullable = false) })
public ModuleRole getModuleRole() {
return moduleRole;
}
}
}
но мой user_module_role имел другое поле создать таблицу user_module_role ( \t user_id INT без знака не равно нулю, \t MODULE_ID ИНТ без знака не равно нулю, \t role_id ИНТ без знака не равно нулю, \t add_user_id INT неподписанных по умолчанию 1, add_date даты и времени по умолчанию '1970/01/01', update_user_id int unsigned default 1, update_date datetime default '1970/01/01'); –
Вы проверили ссылку на учебник, который я поставил в конце ответа? –