Galera…
To com um probleminha aki… dei algumas googladas… e pelo que entendi… o hibernate não está montando as querys…
e gostaria da ajuda de vocês pra identificar o que estou fazendo de errado…
Uso
NetBeans 6
Tomcat 6.0.16
Hibernate 3.2.5
Hibernate Annotation 3.4.0 (eu acho hehehe)
Tá dando o seguinte erro comigo:
Pelo que entendi… ele não ta conseguindo montar a query para executar…
Vou postar minhas classes para ver se ajuda na solução do problema.
Minha Annotation:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package dto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
*
* @author Messias Bittencourt
*/
@Entity
@Table(name = "hardware")
public class Hardware implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID", nullable = false)
private Integer id;
@Column(name = "DEVICEID", nullable = false)
private String deviceid;
@Column(name = "NAME")
private String name;
@Column(name = "WORKGROUP")
private String workgroup;
@Column(name = "USERDOMAIN")
private String userdomain;
@Column(name = "OSNAME")
private String osname;
@Column(name = "OSVERSION")
private String osversion;
@Column(name = "OSCOMMENTS")
private String oscomments;
@Column(name = "PROCESSORT")
private String processort;
@Column(name = "PROCESSORS")
private Integer processors;
@Column(name = "PROCESSORN")
private Short processorn;
@Column(name = "MEMORY")
private Integer memory;
@Column(name = "SWAP")
private Integer swap;
@Column(name = "IPADDR")
private String ipaddr;
@Column(name = "ETIME")
@Temporal(TemporalType.TIMESTAMP)
private Date etime;
@Column(name = "LASTDATE")
@Temporal(TemporalType.TIMESTAMP)
private Date lastdate;
@Column(name = "LASTCOME")
@Temporal(TemporalType.TIMESTAMP)
private Date lastcome;
@Column(name = "QUALITY")
private BigDecimal quality;
@Column(name = "FIDELITY")
private BigInteger fidelity;
@Column(name = "USERID")
private String userid;
@Column(name = "TYPE")
private Integer type;
@Column(name = "DESCRIPTION")
private String description;
@Column(name = "WINCOMPANY")
private String wincompany;
@Column(name = "WINOWNER")
private String winowner;
@Column(name = "WINPRODID")
private String winprodid;
@Column(name = "WINPRODKEY")
private String winprodkey;
@Column(name = "USERAGENT")
private String useragent;
@Column(name = "CHECKSUM")
private Integer checksum;
public Hardware() {
}
public Hardware(Integer id) {
this.id = id;
}
public Hardware(Integer id, String deviceid) {
this.id = id;
this.deviceid = deviceid;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDeviceid() {
return deviceid;
}
public void setDeviceid(String deviceid) {
this.deviceid = deviceid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWorkgroup() {
return workgroup;
}
public void setWorkgroup(String workgroup) {
this.workgroup = workgroup;
}
public String getUserdomain() {
return userdomain;
}
public void setUserdomain(String userdomain) {
this.userdomain = userdomain;
}
public String getOsname() {
return osname;
}
public void setOsname(String osname) {
this.osname = osname;
}
public String getOsversion() {
return osversion;
}
public void setOsversion(String osversion) {
this.osversion = osversion;
}
public String getOscomments() {
return oscomments;
}
public void setOscomments(String oscomments) {
this.oscomments = oscomments;
}
public String getProcessort() {
return processort;
}
public void setProcessort(String processort) {
this.processort = processort;
}
public Integer getProcessors() {
return processors;
}
public void setProcessors(Integer processors) {
this.processors = processors;
}
public Short getProcessorn() {
return processorn;
}
public void setProcessorn(Short processorn) {
this.processorn = processorn;
}
public Integer getMemory() {
return memory;
}
public void setMemory(Integer memory) {
this.memory = memory;
}
public Integer getSwap() {
return swap;
}
public void setSwap(Integer swap) {
this.swap = swap;
}
public String getIpaddr() {
return ipaddr;
}
public void setIpaddr(String ipaddr) {
this.ipaddr = ipaddr;
}
public Date getEtime() {
return etime;
}
public void setEtime(Date etime) {
this.etime = etime;
}
public Date getLastdate() {
return lastdate;
}
public void setLastdate(Date lastdate) {
this.lastdate = lastdate;
}
public Date getLastcome() {
return lastcome;
}
public void setLastcome(Date lastcome) {
this.lastcome = lastcome;
}
public BigDecimal getQuality() {
return quality;
}
public void setQuality(BigDecimal quality) {
this.quality = quality;
}
public BigInteger getFidelity() {
return fidelity;
}
public void setFidelity(BigInteger fidelity) {
this.fidelity = fidelity;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getWincompany() {
return wincompany;
}
public void setWincompany(String wincompany) {
this.wincompany = wincompany;
}
public String getWinowner() {
return winowner;
}
public void setWinowner(String winowner) {
this.winowner = winowner;
}
public String getWinprodid() {
return winprodid;
}
public void setWinprodid(String winprodid) {
this.winprodid = winprodid;
}
public String getWinprodkey() {
return winprodkey;
}
public void setWinprodkey(String winprodkey) {
this.winprodkey = winprodkey;
}
public String getUseragent() {
return useragent;
}
public void setUseragent(String useragent) {
this.useragent = useragent;
}
public Integer getChecksum() {
return checksum;
}
public void setChecksum(Integer checksum) {
this.checksum = checksum;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Hardware)) {
return false;
}
Hardware other = (Hardware) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "servlet.Hardware[id=" + id + "]";
}
}
Minha Implementação do Hibernate:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Messias Bittencourt
*/
package dao.hibernate;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import dao.HardwareDao;
import dto.Hardware;
import exceptions.*;
import jdbc.Hibernate;
public class HardwareDaoImpl extends Hibernate implements HardwareDao {
@SuppressWarnings("unchecked")
public List<Hardware> getAll() throws HardwareException {
Session session = getSession();
try{
Criteria criteria = session.createCriteria(Hardware.class);
System.out.println("Estou no HardwareDaoImpl");
return criteria.list();
}catch(Exception e){
e.printStackTrace();
throw new HardwareException(e);
}
}
public Hardware getById(Integer id){
Hardware hardware = new Hardware();
return hardware;
}
}
Meu Hibernate
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jdbc;
/**
*
* @author Messias Bittencourt
*/
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import dao.*;
import dao.hibernate.*;
import dto.*;
import factory.DaoFactory;
public class Hibernate extends DaoFactory {
private static HardwareDao hardwareDao;
private static final SessionFactory sessionFactory;
static {
System.out.println("INICIOU CONFIGURACAO");
try {
sessionFactory = new AnnotationConfiguration().configure()
.addAnnotatedClass(Hardware.class)
.buildSessionFactory();
} catch (Throwable ex) {
ex.printStackTrace();
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession() throws HibernateException {
return sessionFactory.openSession();
}
public static SessionFactory lookup() {
System.out.println("RECUPERANDO SESSION FACTORY " + sessionFactory);
return sessionFactory;
}
public static Session getCurrentSession() {
return sessionFactory.getCurrentSession();
}
public HardwareDao getHardwareDao() {
if (hardwareDao == null)
hardwareDao = new HardwareDaoImpl();
return hardwareDao;
}
}
Meu XML do hibernate:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!--
Document : hibernate.cfg.xml
Created on : 29 de Janeiro de 2009, 09:13
Author : Messias Bittencourt
Description:
Purpose of the document follows.
-->
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/banco</property>
<property name="connection.username">root</property>
<property name="connection.password"/>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<mapping class="dto.Hardware"/>
</session-factory>
</hibernate-configuration>
E minha SQL… para que… se alguem puder… me ajudar…
/*Table structure for table `hardware` */
DROP TABLE IF EXISTS `hardware`;
CREATE TABLE `hardware` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`DEVICEID` varchar(255) NOT NULL,
`NAME` varchar(255) DEFAULT NULL,
`WORKGROUP` varchar(255) DEFAULT NULL,
`USERDOMAIN` varchar(255) DEFAULT NULL,
`OSNAME` varchar(255) DEFAULT NULL,
`OSVERSION` varchar(255) DEFAULT NULL,
`OSCOMMENTS` varchar(255) DEFAULT NULL,
`PROCESSORT` varchar(255) DEFAULT NULL,
`PROCESSORS` int(11) DEFAULT '0',
`PROCESSORN` smallint(6) DEFAULT NULL,
`MEMORY` int(11) DEFAULT NULL,
`SWAP` int(11) DEFAULT NULL,
`IPADDR` varchar(255) DEFAULT NULL,
`ETIME` datetime DEFAULT NULL,
`LASTDATE` datetime DEFAULT NULL,
`LASTCOME` datetime DEFAULT NULL,
`QUALITY` decimal(4,3) DEFAULT '0.000',
`FIDELITY` bigint(20) DEFAULT '1',
`USERID` varchar(255) DEFAULT NULL,
`TYPE` int(11) DEFAULT NULL,
`DESCRIPTION` varchar(255) DEFAULT NULL,
`WINCOMPANY` varchar(255) DEFAULT NULL,
`WINOWNER` varchar(255) DEFAULT NULL,
`WINPRODID` varchar(255) DEFAULT NULL,
`WINPRODKEY` varchar(255) DEFAULT NULL,
`USERAGENT` varchar(50) DEFAULT NULL,
`CHECKSUM` int(11) DEFAULT '131071',
PRIMARY KEY (`DEVICEID`,`ID`),
KEY `NAME` (`NAME`),
KEY `CHECKSUM` (`CHECKSUM`),
KEY `DEVICEID` (`DEVICEID`),
KEY `ID` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;