Olá pessoal, estou com dificuldades em realizar um relacionamento ManyToOne, segue abaixo minhas classes:
A tabela aparelho possue um campo mar_codigo que esta relacionado com o campo id da tabela marca
tabela MARCA:
@Entity
@Table(name="marca")
@SequenceGenerator(name = "seqMarca", sequenceName = "seq_marca")
public class MarcaBean extends VisaoTIBean {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "seqMarca")
@Column(name="id")
private Integer id;
@Column(name="mar_descricao")
private String descricao;
}
Tabela APARELHO
@Entity
@Table(name="aparelho")
@SequenceGenerator(name = "seqAparelho", sequenceName = "seq_aparelho")
public class AparelhoBean extends VisaoTIBean {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "seqAparelho")
@Column(name="id")
private Integer id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="mar_codigo", referencedColumnName="id")
private MarcaBean marca;
@Column(name="apa_modelo")
private String modelo;
@Column(name="apa_descricao")
private String descricao;
@Column(name="apa_especificacao")
private String especificacao;
}
Lógica MARCA:
@Component
@InterceptedBy({LoginInterceptor.class, DaoInterceptor.class})
public class MarcaLogic {
private final DaoFactory daoFactory;
private final VisaoTILogic logic;
@Parameter
@Out
private MarcaBean marca = new MarcaBean();
@Parameter
private List<MarcaBean> marcas;
public MarcaLogic(DaoFactory daoFactory) {
this.daoFactory = daoFactory;
logic = new VisaoTILogic(daoFactory, MarcaBean.class);
}
public void edit(MarcaBean marca) {
this.marca = (MarcaBean) logic.get(this.marca.getId());
}
@SuppressWarnings("unchecked")
public void post() {
if (marca.getId() == null)
logic.insert(marca);
else
logic.update(marca);
}
public void delete(@Parameter(key="codigo") String codigo) {
marca = new MarcaBean();
marca.setId(Integer.parseInt(codigo));
logic.delete(marca);
}
public void loadAll() {
marcas = logic.loadAll();
}
public void loadAll(@Parameter(key="fieldOrder") String fieldOrder) {
marcas = logic.loadAll(fieldOrder);
}
public void formulario() {
}
public List<MarcaBean> getMarcas() {
return marcas;
}
}
Lógica APARELHO:
@Component
@InterceptedBy({LoginInterceptor.class, DaoInterceptor.class})
public class AparelhoLogic {
private final DaoFactory daoFactory;
private final VisaoTILogic logic;
private final MarcaLogic logicMarca;
@Parameter
@Out
private AparelhoBean aparelho = new AparelhoBean();
@Parameter
private List<AparelhoBean> aparelhos;
private List<MarcaBean> marcas;
public AparelhoLogic(DaoFactory daoFactory) {
this.daoFactory = daoFactory;
logic = new VisaoTILogic(daoFactory, AparelhoBean.class);
logicMarca = new MarcaLogic(daoFactory);
logicMarca.loadAll("descricao");
marcas = logicMarca.getMarcas();
}
public void edit(AparelhoBean aparelho) {
this.aparelho = (AparelhoBean) logic.get(this.aparelho.getId());
}
@SuppressWarnings("unchecked")
public void post() {
if (aparelho.getId() == null)
logic.insert(aparelho);
else
logic.update(aparelho);
}
public void delete(@Parameter(key="codigo") String codigo) {
aparelho = new AparelhoBean();
aparelho.setId(Integer.parseInt(codigo));
logic.delete(aparelho);
}
public void loadAll(@Parameter() {
aparelhos = logic.loadAll();
}
public void formulario() {
}
public List<AparelhoBean> getAparelhos() {
return aparelhos;
}
public List<MarcaBean> getMarcas() {
return marcas;
}
}
JSP da adição do APARELHO:
<body>
<h1>Novo Aparelho</h1>
<form action='aparelho.post.logic' method="post" accept-charset="iso-8859-1" id="formprincipal">
Código: <input type="text" name="aparelho.id" value="${aparelho.id}" readonly="true"/><br/>
Marca:
<select name="aparelho.marca.id">
<c:forEach var="m" items="${marcas}">
<option value="${m.id}">${m.descricao}</option>
</c:forEach>
</select><br/>
Modelo: <input type="text" name="aparelho.modelo" value="${aparelho.modelo}"/><br/>
Descrição: <input type="text" name="aparelho.descricao" value="${aparelho.descricao}"/><br/>
<input type="submit" value="confirmar"/>
</form>
</body>
Porém quando confirmo a inclusão de um novo aparelho, a marca sempre vem nula!!!
Alguém sabe me dize o que esta errado ???
[]'s
Márcio