Olá pessoal estou tendo dificuldades de resolver esse probleminha que vou postar para vcs olharem
Estou tentando fazer dois tipos de consulta que me retornam os dados para dentro de um formulario
1ª consulta
public Object buscar(Class clazz,Integer pk) throws Exception {
Session session = HibernateFactory.getSession();
Transaction transaction = session.beginTransaction();
try {
Serializable obj = (Serializable) session.get(clazz, pk );
session.flush();
transaction.commit();
return obj;
} finally {
session.close();
}
}
Porém dessa maneira só posso consultar a chave do banco
Mas como eu preciso consultar um String e ele não é chave, estou fazendo assim
public List buscarByCodigo(Class clazz, String codigo) throws Exception{
Session session = HibernateFactory.getSession();
Transaction transaction = session.beginTransaction();
try{
List list = session.createCriteria(clazz, codigo).list();
session.flush();
transaction.commit();
return list;
}finally{
session.close();
}
}
Só que dessa maneira me retorna em forma de listagem e quando faço o envio para dentro do form da erro
javax.servlet.ServletException: java.lang.NoSuchMethodError: hibernate.PersistenciaDAO.buscarByCodigo(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:294)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:150)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause
java.lang.NoSuchMethodError: hibernate.PersistenciaDAO.buscarByCodigo(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
conta.action.ContaAction.buscar(ContaAction.java:85)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:150)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
Como posso fazer para resolver isso?
eu fiz assim…
[code] public ClienteBean findByCPF(ClienteBean clienteBean) {
Criteria criteria = HibernateFactory.getInstance().getSession()
.createCriteria(ClienteBean.class);
criteria.add(Expression.eq("cpf", clienteBean.getCpf()));
return (ClienteBean) criteria.uniqueResult();
}[/code]
acho que esse exemplo pode te dar uma ajudada…
Cara obrigado pela ajuda, porém apareceu um erro, mais acho que o caminho é esse
O Metodo ficou assim
public Conta buscarByCodigo(Conta conta) throws Exception{
Session session = HibernateFactory.getSession();
Transaction transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Conta.class);
criteria.add(Expression.eq("codigo", conta.getCodigo()));
return (Conta) criteria.uniqueResult();
}
O erro foi esse
avax.servlet.ServletException: java.lang.IllegalArgumentException: No origin bean specified
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause
java.lang.IllegalArgumentException: No origin bean specified
org.apache.commons.beanutils.BeanUtils.copyProperties(BeanUtils.java:224)
conta.action.ContaAction.buscar(ContaAction.java:86)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:150)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
O que pode ser?
esse “codigo” seria o atributo do seu bean?
corretamente?
isso codigo e um atributo
Bean
@Entity
@Table(name = "conta")
public class Conta implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@Column(name = "idconta", nullable = false)
private Integer idconta;
@Column(name = "codigo")
private String codigo;
@Column(name = "nome", nullable = false)
private String nome;
@Column(name = "obs")
private String obs;
gets ... sets
o pau não é na classe é em outro lugar
Pois é cara não to conseguindo tbm, mais creio que esta tudo certo ne?
a parte do hibernate ta funcionando sim
esse pau ai é com o struts e a jsp…
cola os codigo ai…
JSP
<html:form action="conta" focus="codigo">
<bean:message key="label.codigo"/><html:text property="codigo"/>
<bean:message key="label.nome"/><html:text property="nome"/>
<bean:message key="label.obs"/><html:text property="obs" />
<html:submit property="method" ><bean:message key="button.salvar" /></html:submit>
<html:submit property="method" ><bean:message key="button.deletar" /></html:submit>
<html:submit property="method" ><bean:message key="button.buscar" /></html:submit>
<html:submit property="method" ><bean:message key="button.limpar" /></html:submit>
</html:form>
Action
HttpSession session = request.getSession();
ContaForm contaForm = (ContaForm) form;
Conta conta = new Conta();
PersistenciaDAO persistencia = new PersistenciaDAO();
conta = (Conta) persistencia.buscarByCodigo(conta);
BeanUtils.copyProperties(contaForm, conta);
ContaForm contaForm = (ContaForm) form;
Conta conta = new Conta();
mude para
ContaForm contaForm = (ContaForm) form;
Conta conta = contaForm.getConta();
Cara desde já quero agradecer a sua ajuda
, muito bom quando alguem se compromete em realmente ajudar
Action
public ActionForward buscar(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HttpSession session = request.getSession();
ContaForm contaForm = (ContaForm) form;
Conta conta = contaForm.getConta();
PersistenciaDAO persistencia = new PersistenciaDAO();
conta = (Conta) persistencia.buscarByCodigo(conta);
BeanUtils.copyProperties(contaForm, conta);
return mapping.findForward(SUCCESS);
}
cola o xml do hibernate e do struts…
acho que achei teu erro
muda isso
BeanUtils.copyProperties(contaForm, conta);
para
BeanUtils.copyProperties(contaForm.getConta();, conta);
se nao der certo tira ele e vamos ver se roda
o pau ta neesse BeanUtils
tem algum outro atributo setado no teu bean?
ou somente o código?
No meu bean tem mais coisas setadas como nome e obs
Fiz todas as mudanças e inventei mais algumas, hehe, mais sem sucesso
Vou mudar meu sistema e adotar outra extrategia, valeu galera pela ajuda 