BeanUtils - метод «описать», возвращающий InvocationTargetException - PullRequest
0 голосов
/ 18 апреля 2011

Я пытаюсь получить на карте свойства следующего объекта:

@Entity
@Table(name = "ps_parameter")
@NamedQueries({Named Queries Here..})
public class PSParameter
    implements Serializable
{
    //~ Static variables/initializers ----------------------------------------------------
    ....

    //~ Instance variables ---------------------------------------------------------------

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Integer id;

    @Column(name = "name", nullable = false)
    private String name;

    @Column(name = "paramValue", nullable = false)
    private String paramValue;

    //~ Constructors ---------------------------------------------------------------------
    ....

    //~ Methods --------------------------------------------------------------------------
    public Double getDoubleValue()
    {
        return Double.parseDouble(getParamValue());
    }

    public Integer getIntegerValue()
    {
        return Integer.parseInt(getParamValue());
    }
    ....
}

Через следующее:

 ....
 try
   {
   Map propertiesCurrentObject = BeanUtils.describe(currentObject);
   ....
   }
 ....

Понятно currentObject это PSParameter ..

Всякий раз, когда вызывается функция describe, я получаю InvocationTargetException:

java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:2170)
    at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1332)
    at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:770)
    at org.apache.commons.beanutils.BeanUtilsBean.getNestedProperty(BeanUtilsBean.java:715)
    at org.apache.commons.beanutils.BeanUtilsBean.getProperty(BeanUtilsBean.java:741)
    at org.apache.commons.beanutils.BeanUtilsBean.describe(BeanUtilsBean.java:514)
    at org.apache.commons.beanutils.BeanUtils.describe(BeanUtils.java:185)
    at xxx.yyy.ejb.core.facade.AuditEntryFacade.getChangesBetweenTwoObjects(AuditEntryFacade.java:1198)
....

Чья основная причина следующая:

Caused by: java.lang.NumberFormatException: For input string: "true"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:481)
    at java.lang.Integer.parseInt(Integer.java:514)
    at xxx.yyy.ejb.core.entity.PSParameter.getIntegerValue(PSParameter.java:169)
    ... 87 more

Любой намек, почему это происходит? Я имею в виду, что для меня ясна основная причина исключения, заключающаяся в том, что я не могу разобрать строку в целое число, но почему BeanUtils и его описание делает это?

В любом случае, чтобы обойти это или любую альтернативу? Спасибо!

1 Ответ

1 голос
/ 18 апреля 2011

С Javadoc :

Возвращает весь набор свойств, для которых указанный компонент предоставляет метод чтения.Эта карта содержит преобразованные в String значения свойств для всех свойств, для которых предоставляется метод чтения

Это означает, что метод describe() возвращает карту из свойства в значение свойства данного компонента, вызывая метод получениячтобы получить последний.Это означает, что ни один из ваших получателей не должен выдавать исключение при вызове describe().

...