0
我已将装有Eclipse Link的Java实体加载到我的项目中。这是一个简单的关系User
- Rol
模型,但我不知道为什么它只是不加载用户的Rol
列表。集合在Hibernate中未正确加载
这是我生成的代码。由于日志显示正确的查询,甚至显示它加载了rol,但从未出现在用户类上,所以它正在致命中。
@Entity
@Table(name = "usuario")
@NamedQuery(name = "Usuario.findAll", query = "SELECT u FROM Usuario u")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String username;
//bi-directional many-to-many association to Rol
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "usuario_has_rol",
joinColumns = {@JoinColumn(name = "usuario_username")},
inverseJoinColumns = {@JoinColumn(name = "rol_id_rol")})
private List<Rol> rols;
// getters and setters
}
的ROL类:
@Entity
@Table(name = "rol")
@NamedQuery(name = "Rol.findAll", query = "SELECT r FROM Rol r")
public class Rol implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id_rol")
private int idRol;
@Column(name = "rol_name")
private String rolName;
//bi-directional many-to-one association to RolHasMenu
@OneToMany(mappedBy = "rol")
private List<RolHasMenu> rolHasMenus;
//bi-directional many-to-many association to Usuario
@ManyToMany(mappedBy = "rols")
private List<Usuario> usuarios;
// getters and setters
}
日志显示如下(在那里我可以看到ROL正确装入)
21:59:17,112 TRACE EntityReferenceInitializerImpl:245 - hydrating entity state
21:59:17,112 TRACE EntityReferenceInitializerImpl:297 - Initializing object from ResultSet: [org.inkasoft.edustat.model.Rol#2]
21:59:17,113 TRACE AbstractEntityPersister:2901 - Hydrating entity: [org.inkasoft.edustat.model.Rol#2]
21:59:17,113 TRACE BasicExtractor:78 - extracted value ([rol_name2_19_4_] : [VARCHAR]) - [ROL_USER]
21:59:17,113 TRACE BasicExtractor:78 - extracted value ([usuario_1_24_3_] : [VARCHAR]) - [jaxkodex]
21:59:17,113 DEBUG CollectionReferenceInitializerImpl:77 - Found row of collection: [org.inkasoft.edustat.model.Usuario.rols#jaxkodex]
21:59:17,113 TRACE LoadContexts:171 - Constructing collection load context for result set [[email protected]]
21:59:17,114 TRACE CollectionLoadContext:112 - Starting attempt to find loading collection [[org.inkasoft.edustat.model.Usuario.rols#jaxkodex]]
21:59:17,114 TRACE CollectionLoadContext:138 - Instantiating new collection [key=jaxkodex, [email protected]]
21:59:17,114 TRACE BasicExtractor:78 - extracted value ([rol_id_r2_25_3_] : [INTEGER]) - [2]
你是否得到任何异常?你还需要声明rols的列表类型,例如像这样'private List rols = new ArrayList ();''使用'ArrayList' –
Chaitanya
2014-09-11 04:56:52
请添加getters/setters代码。 – 2014-09-11 10:07:28