hi, we are using Drools 4.0.7 and have a rule which uses a Hibernate entity (SaleEventItem) and its related entity (Inventory). Some times, the SaleEventItem passed as the fact has the Inventory lazy loaded and hence its type is the Hibernate proxy - Inventory_$$_javassist_93. In this case, the rule runs fine.
But at times, the SaleEventItem which is passed has the Inventory attribute set explicitly and hence its type is Inventory itself. When the rule fires in this case, it tries to assign the Inventory into Inventory_$$_javassist_93 which causes this ClassCastException.

java.lang.ClassCastException: com.crom.data.pojo.Inventory incompatible with com.crom.data.pojo.Inventory_$$_javassist_93

        at ASMAccessorImpl_14985690421242774005070.getValue(Unknown Source)
        at org.mvel.ast.VariableDeepPropertyNode.getReducedValueAccelerated(VariableDeepPropertyNode.java:22)
        at org.mvel.ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.java:21)
        at org.mvel.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation..java:21)
        at org.mvel.MVELRuntime.execute(MVELRuntime.java:90)
        at org.mvel..CompiledExpression.getValue(CompiledExpression.java:111)
        at org.mvel.MVEL.executeExpression(MVEL.java:235)
        at org.drools.base.mvel.MVELPredicateExpression..evaluate(MVELPredicateExpression.java:45)
        at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint..java:209)

How do we prevent this? Is it possible to somehow enforce that the type of the variable in the rule should be Inventory and not Inventory_$$_javassist_93?

The rule is as follows.

dialect "java"
        when
                $sale:SaleEventItem(inventory != null,
                            $leaseInfo:inventory.leaseInformation != null,
                            $saleEventPrize:inventory.leaseInformation.residualPayAmount != null)
        then
                $sale.setStartPrice((Double)$sale.getInventory().getLeaseInformation().getResidualPayAmount());


Thanks,

Sobha



Bollywood news, movie reviews, film trailers and more! Click here.