[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] Strage error with typedQuery
|
The issue seems to be with your using TABLE_PER_CLASS (not SingleTable).
Please log a bug with the details.
What do you mean you don't get the error with 2.3.0? What doesn't work?
You may wish to consider using a different inheritance type.
Arcangel wrote:
>
> On Jueves 01 Septiembre 2011 13:58:40 usted escribió:
>> The error seems to indicate that the Enum is being passed directly to the
>> database without being converted.
>>
>> Setting, "eclipselink.logging.parameters"="true" in your persistence.xml
>> will help debug, then it will print the parameters.
>>
>> I'm not sure how the value could be missed being converted. What type is
>> used for the column in the table?
> After some debugging I can verify the strange behavior. The TypedQuery
> call
> two sql querys. In the first, the parameter tipoDevolucion is String and
> in
> the second query the parameter tipoDevolucion is TipoDevolucion. I think
> this
> is a bug in eclipselink when you use inheretance SingleTable with some
> Entity
> that have Enumerated.String field. With eclipselink 2.3.0 not exception is
> throw, but the query won't work.
>>
>> Arcangel wrote:
>> > Hello.
>> >
>> > I'm having some troubles with a query:
>> > ----------------
>> > CriteriaQuery<DetalleDevolucion> criteriaQuery =
>> > cb.createQuery(DetalleDevolucion.class);
>> >
>> > Root<DetalleDevolucion> from =
>> > criteriaQuery.from(DetalleDevolucion.class);
>> >
>> > Predicate predicate = cb.equal(from.get(DetalleDevolucion_.tipoSorteo),
>> > tipoSorteo);
>> >
>> > predicate = cb.and(predicate,
>> > cb.equal(from.get(DetalleDevolucion_.noSorteo),
>> > Integer.valueOf(noSorteo)));
>> >
>> > predicate = cb.and(predicate,
>> > cb.equal(from.get(DetalleDevolucion_.tipoDevolucion),
>> > TipoDevolucion.valueOf(tipoDevolucion)));
>> >
>> > criteriaQuery.where(predicate);
>> >
>> > TypedQuery<DetalleDevolucion> typedQuery =
>> em.createQuery(criteriaQuery);
>> > return typedQuery.getResultList();
>> > ------------------
>> > When I do that I obtain:
>> > ----------------
>> > Exception [EclipseLink-4002] (Eclipse Persistence Services -
>> > 2.2.0.v20110202-
>> > r8913): org.eclipse.persistence.exceptions.DatabaseException
>> > Internal Exception: java.sql.SQLException: El tipo no está soportado.
>> > Error Code: 20000
>> > Call: SELECT NOSERIE, NOBILLETE, NOSORTEO, SIGNO, TIPOSORTEO,
>> NOFRACCION,
>> > AUDITUSER, CONSECUTIVO, DEVOLUCION, FRACCIONES, NOCORTE, OBSERVACIONES,
>> > TIPODEVOLUCION, VERSION FROM DetallesDevolucionAcum WHERE
>> (((((TIPOSORTEO
>> > = ?)
>> > AND (NOSORTEO = ?)) AND (TIPODEVOLUCION = ?)) AND (NOCORTE = ?)) AND
>> > (FRACCIONES = ?))
>> > bind => [5 parameters bound]
>> > --------------
>> >
>> > if I comment this part:
>> > ------------
>> > predicate = cb.and(predicate,
>> > cb.equal(from.get(DetalleDevolucion_.tipoDevolucion),
>> > TipoDevolucion.valueOf(tipoDevolucion)));
>> > ----------
>> > The query works fine.
>> >
>> >
>> > My entity is declared this way:
>> > -----------------
>> > @Entity
>> > @Table(name="DetallesDevoluciones")
>> > @IdClass(FraccionPK.class)
>> > @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
>> > public class DetalleDevolucion extends Model {
>> >
>> > @Id
>> > @NotEmpty(message="El tipo de sorteo no puede estar vacio.")
>> > @Pattern(regexp="[A-Z]{2}", message="El tipo de sorteo deben ser 2
>> >
>> > letras mayúsculas.")
>> >
>> > private String tipoSorteo;
>> >
>> > @Id
>> > @NotNull(message="El consecutivo no puede estar vacio.")
>> > @Range(min=0, max=9999, message="El valor del no de Sorteo debe estar
>> >
>> > entre 0 y 9999")
>> >
>> > private Integer noSorteo;
>> >
>> > @NotNull(message="El consecutivo no puede estar vacio.")
>> > @Range(min=0, max=99, message="El valor del consecutivo debe estar
>> >
>> > entre 0 y 99")
>> >
>> > private Integer consecutivo;
>> >
>> > @NotNull(message="La cantidad de devolución no puede estar vacia.")
>> > @Digits(integer=14, fraction=2, message="El devolución inútil es mayor
>> >
>> > al máximo predeterminado")
>> >
>> > @Column(precision = 14, scale = 2)
>> > private BigDecimal devolucion;
>> >
>> > @NotNull(message="Las fracciones no pueden estar vacias.")
>> > private Integer fracciones;
>> >
>> > @Id
>> > @NotNull(message="El No de Billete no puede estar vacio.")
>> > @Range(min=0, max=9999999, message="El valor del no de billete debe
>> >
>> > estar entre 0 y 9999999")
>> >
>> > private Integer noBillete;
>> >
>> > @Id
>> > @NotNull(message="El signo no puede estar vacio.")
>> > @Range(min=0, max=12, message="El valor del signo debe estar entre 0 y
>> >
>> > 12")
>> >
>> > private Integer signo;
>> >
>> > @Id
>> > @NotNull(message="La serie no puede estar vacia.")
>> > @Range(min=1, max=9, message="El no de serie debe estar entre 1 y 9")
>> > private Integer noSerie;
>> >
>> > @Id
>> > @NotNull(message="El no de fracción no puede estar vacio.")
>> > @Range(min=-99, max=99, message="El valor del no de fracción debe
>> >
>> > estar entre 0 y 99")
>> >
>> > private Integer noFraccion;
>> >
>> > @NotNull(message="El no de corte no puede estar vacio.")
>> > @Index
>> > @Column(name="NOCORTE")
>> > private Integer noCorte;
>> >
>> > private String observaciones;
>> >
>> > @Enumerated(EnumType.STRING)
>> > @NotNull(message="El tipo de devolución no puede estar vacio.")
>> > @Index
>> > @Column(name="TIPODEVOLUCION")
>> > private TipoDevolucion tipoDevolucion;
>> >
>> > ...
>> > }
>> > ------------
>> > And I have a child entity:
>> > --------------
>> > @Entity
>> > @Table(name="DetallesDevolucionAcum")
>> > public class DetalleDevolucionAcum extends DetalleDevolucion{
>> >
>> > private static final long serialVersionUID = 1893358673129186997L;
>> >
>> > }
>> > ---------------
>> >
>> > Any Ideas?
>> >
>> > Thanks for your help.
>>
>
-----
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland
http://www.eclipse.org/eclipselink/
EclipseLink , http://www.oracle.com/technology/products/ias/toplink/
TopLink
Wiki: http://wiki.eclipse.org/EclipseLink EclipseLink ,
http://wiki.oracle.com/page/TopLink TopLink
Forums: http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink ,
http://www.nabble.com/EclipseLink-f26430.html EclipseLink
Book: http://en.wikibooks.org/wiki/Java_Persistence Java Persistence
Blog: http://java-persistence-performance.blogspot.com/ Java Persistence
Performance
--
View this message in context: http://old.nabble.com/Strage-error-with-typedQuery-tp32374726p32424491.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.