Pessoal, estou usando o ibatis num projeto aqui da empresa, vamos ver se vcs conseguem me dar alguma ajuda:
O problema consiste simplesmente em popular um objeto (do tipo Area) do meu objeto Usuario.
Os outros campos do objeto sao populados perfeitamente. Só este não eh populado. Esta situacao ocorre identica na app jPetStore de demo do ibatis com as classes Item e Product. Segui a forma de solucao deles para resolver o meu problema:
Vou colocar os mapeamentos abaixo:
- Minhas tabelas:
USUARIO:
"ID" INTEGER NOT NULL,
"LOGIN" VARCHAR(15) NOT NULL,
"SENHA" CHAR(80),
"GRUPO" SMALLINT NOT NULL,
"NOME" VARCHAR(60),
"DEPTO" VARCHAR(20),
"CARGO" VARCHAR(20),
"INATIVO" VARCHAR(1),
"EMAIL" VARCHAR(60),
"AREA" INTEGER,
AREA
"ID" INTEGER,
"DESCRICAO" VARCHAR(30)
- Meu arquivo de mapeamento:
...
<select id="getById" parameterClass="java.lang.Integer" resultClass="Usuario">
SELECT usuarios.id, login, senha, grupo, inativo, nome, depto, cargo, email,
area AS "area.id",
descricao AS "area.descricao"
FROM usuarios, areas
WHERE usuarios.area = areas.id
AND usuarios.id=#id#
</select>
...
- A chamada no DAO:
public Usuario getById(Integer id) {
return (Usuario) super.getSqlMapClientTemplate().queryForObject("getById", id);
}
Acredito que os POJOS nao serao necessarios pois tem basicamente a mesma estrutura das tabelas.
Existem duas outras solucoes que sao, usar um map para o retorno e executar 2 selects, ambas nao gostaria de utilizar.
Grato,