Problema de Casting creo?
tengo una problema con respecto al mismo tema trabajo con tomcat mysql y vaadim
el problema es para realizar consultas cuando no es por el campo clave y le e dado vuelta al tema es mas me eh creado clases aparte de las que trabajo con jpa para asi poder trabajar directamente con la bd
import java.math.BigInteger;
import java.util.Date;
public class StockMySql {
private BigInteger id;
private BigInteger existencia;
private BigInteger mueble_id;
private BigInteger local_id;
private String motivo;
private Date fechaUltimaModificacion;
public BigInteger getId() {
return id;
}
public void setId(BigInteger id) {
this.id = id;
}
public BigInteger getExistencia() {
return existencia;
}
public void setExistencia(BigInteger existencia) {
this.existencia = existencia;
}
public BigInteger getMueble_id() {
return mueble_id;
}
public void setMueble_id(BigInteger mueble_id) {
this.mueble_id = mueble_id;
}
public BigInteger getLocal_id() {
return local_id;
}
public void setLocal_id(BigInteger local_id) {
this.local_id = local_id;
}
public String getMotivo() {
return motivo;
}
public void setMotivo(String motivo) {
this.motivo = motivo;
}
public Date getFechaUltimaModificacion() {
return fechaUltimaModificacion;
}
public void setFechaUltimaModificacion(Date fechaUltimaModificacion) {
this.fechaUltimaModificacion = fechaUltimaModificacion;
}
@Override
public String toString() {
return "StockMySql [id=" + id + ", existencia=" + existencia
+ ", mueble_id=" + mueble_id + ", local_id=" + local_id
+ ", motivo=" + motivo + ", fechaUltimaModificacion="
+ fechaUltimaModificacion + "]";
}
}
package fondar.Dominio;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
/**
* Entity implementation class for Entity: stock
*
*/
@Entity
public class Stock implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@NotNull
private Integer existencia;
@OneToOne
private Mueble mueble;
@OneToOne
@Valid
private Local local;
private String motivo;
private Date fechaUltimaModificacion;
public Date getFechaUltimaModificacion() {
return fechaUltimaModificacion;
}
public void setFechaUltimaModificacion(Date fechaUltimaModificacion) {
this.fechaUltimaModificacion = fechaUltimaModificacion;
}
public String getMotivo() {
return motivo;
}
public void setMotivo(String motivo) {
this.motivo = motivo;
}
public Local getLocal() {
return local;
}
public void setLocal(Local local) {
this.local = local;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public String toString() {
return "Stock [id=" + id + ", existencia=" + existencia + ", mueble="
+ mueble.getNombre() + ", local=" + local.getNombre() + ", motivo=" + motivo + "]";
}
public Integer getExistencia() {
return existencia;
}
public void setExistencia(Integer existencia) {
this.existencia = existencia;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public Mueble getMueble() {
return mueble;
}
public void setMueble(Mueble mueble) {
this.mueble = mueble;
}
}
///////////////////////////////////////
cuando ejecuto esto
List result = Core.getEntityManager().createQuery("SELECT * FROM Stock t1 WHERE t1.local_id= 1 and t1.mueble_id= 38" ).getResultList();
//List<Stock> listaStock = new ArrayList<Stock>();
for (Object o : result) {
StockMySql s= (StockMySql) o;
System.out.print(s.toString());//stock.getMotivo());
}
por la consola XD pork ahi hago las pruebas
[JPivot] 30 ago 2012 02:46:44,047 ERROR [Session ] org.hibernate.hql.internal.ast.ErrorCounter#reportError: line 1:8: unexpected token: *
[JPivot] 30 ago 2012 02:46:44,066 ERROR [Session ] org.hibernate.hql.internal.ast.ErrorCounter#reportError: line 1:8: unexpected token: *
line 1:8: unexpected token: *
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectClause(HqlBaseParser.java:1256)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1030)
at org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:700)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:294)
at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:157)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:266)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:180)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:219)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:197)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1736)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291)
at fondar.DominioMysql.Ejecutar.main(Ejecutar.java:92)
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [SELECT * FROM fondar.Dominio.Stock t1 WHERE t1.local_id= 1 and t1.mueble_id= 38]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1364)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1300)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:294)
at fondar.DominioMysql.Ejecutar.main(Ejecutar.java:92)
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [SELECT * FROM fondar.Dominio.Stock t1 WHERE t1.local_id= 1 and t1.mueble_id= 38]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:79)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:276)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:180)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:219)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:197)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1736)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291)
... 1 more
dije similar pork si lo paso a native query el resultado es el siguiente
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to fondar.DominioMysql.StockMySql
at fondar.DominioMysql.Ejecutar.main(Ejecutar.java:98)
y si cambio a Stock el casting
List result = Core.getEntityManager().createNativeQuery("SELECT * FROM Stock t1 WHERE t1.local_id= 1 and t1.mueble_id= 38" ).getResultList();
//List<Stock> listaStock = new ArrayList<Stock>();
for (Object o : result) {
Stock s= (Stock) o;
System.out.print(s.toString());//stock.getMotivo());
}
el error es el siguiente
por mas informacion y demas cosas k presisen pregunten no hay drama
saludos Gonzalo
- slipox's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios
Busca tu excepción en Brainleg
Cuando salga tu excepción copiala y pegala en el buscador de BrainLeg.
Hazlo y nos cuentas cual fue el error.
0_o