BlazeDs java.lang.Double kann nicht in java.lang.Float umgewandelt werden

Hallo, ich mache einige Tests über eine AMF-Verbindung, um die Performances zu testen eines Dienstes, der in einer application Server-Instanz von wildfly8 implementiert wird, die einen komplexen Entitätstyp speichert. Diese Entität enthält ein Feld wie:

  private Quantity quantity = null;

Wenn die Menge ein Objekt ist.

public class Quantity implements Serializable

Wenn dieses Feld bewertet wird, wird eine Ausnahme ausgelöst:

javax.ejb.EJBTransactionRolledbackException: java.lang.Double cannot be cast to java.lang.Float
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:163)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:253)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:342)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

Caused by: java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Float
at org.hibernate.type.descriptor.java.FloatTypeDescriptor.unwrap(FloatTypeDescriptor.java:36)
at org.hibernate.type.descriptor.sql.RealTypeDescriptor$1.doBind(RealTypeDescriptor.java:64)
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:90)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:286)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:281)
at org.hibernate.type.ComponentType.nullSafeSet(ComponentType.java:367)
at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2843)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3121)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3581)`

Wie in diesem Link vorgeschlagen ( http://flexblog.faratasystems.com /index.php/custom-type-masrhaller-in-blazeds ) Ich habe versucht, die Methode ASTranslator.convert (Object source, Class sinedClass) mit einem NumberDecoder zu überschreiben, um ein in BlazeDS bekanntes Problem zu lösen, aber nichts hat sich geändert.

Das Problem besteht darin, dass Flex-Java-Wrapperklassen (d. H. Float, Double, Long, Integer, Short, Byte, BigDecimal und BigInteger) und einfache Typen (d. H. Float, double, long, int, short, Byte) in den AS3-Zahlentyp gemarshallt werden.

1
ru
Ich bin kein Java-Experte, aber Sie sind sicher, dass null KEIN Problem verursacht? Kann es nicht private sein Menge menge = 0; ? Anderenfalls ist die Verwendung von null genau wie das Aussprechen von undefiniert oder nicht existierendem ..
hinzugefügt der Autor VC.One, Quelle
Sie sollten die Lösung als tatsächliche Antwort veröffentlichen. Auf diese Weise bleibt die Frage nicht bei "0 Antworten" auf der Suche. Niemand wird wissen, dass die Kommentare allein eine Lösung haben.
hinzugefügt der Autor VC.One, Quelle
Die Menge ist ein Objekt. Es kann nicht 0 sein.
hinzugefügt der Autor Graziana Binetti, Quelle
Lösung: Fügen Sie unter untergeordnete Elemente hinzu, die eine echte Implementierung von T haben (z. B. QuantityOfFloat extends Quantity ). In diesem Fall hat BlaseDs eine echte Implementierung von Number nicht ein Objekt.
hinzugefügt der Autor Graziana Binetti, Quelle