【发布时间】:2014-12-17 10:20:18
【问题描述】:
低于数据库异常,需要帮助
service() for servlet catalogservice threw exception: java.lang.IllegalArgumentException: Named query not found: SELECT OMX_PLAN_ID, PLAN_ID,DECODE(plan_id,0,ser_input_total_amount,first_payment) first_paymenmt From (SELECT OMX_PLAN_ID, PLAN_ID,(SELECT DECODE(fraction,0,fixed_payment_amount, (( fraction/100) * :useinput_total_amount)) From TFN.VW_OMX_PAYMENT_PLAN_DETAILS i WHERE o.OMX_PLAN_ID=i.OMX_PLAN_ID AND i.OMX_PLAN_ID=:omxPlanId AND i.PAYMENT_ID=1) first_payment FM TFN.VW_OMX_PAYMENT_PLANS o ) WHERE OMX_PLAN_ID=:omxPlanId ORDER by 1
at org.hibernate.ejb.AbstractEntityManagerImpl.createNamedQuery(AbstractEntityManagerImpl.java:704) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Fin
DAO 方法
public TermPayment findFirstPaymentByTotalAndPlanId(int planId, double totalAmount) {
TypedQuery<TermPayment> query = entityManager.createNamedQuery("SELECT OMX_PLAN_ID, PLAN_ID,DECODE(plan_id,0,:user_input_total_amount,first_payment) first_paymenmt From (SELECT OMX_PLAN_ID, PLAN_ID,(SELECT DECODE(fraction,0,fixed_payment_amount, (( fraction/100) * :user_input_total_amount)) From TFN.VW_OMX_PAYMENT_PLAN_DETAILS i WHERE o.OMX_PLAN_ID=i.OMX_PLAN_ID AND i.OMX_PLAN_ID=:omxPlanId AND i.PAYMENT_ID=1) first_payment FROM TFN.VW_OMX_PAYMENT_PLANS o ) WHERE OMX_PLAN_ID=:omxPlanId ORDER by 1", TermPayment.class);
query.setParameter("omxPlanId", planId);
query.setParameter("user_input_total_amount", totalAmount);
return query.getSingleResult();
}
返回类
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class TermPayment {
@Id
@Column(name = "OMX_PLAN_ID")
Integer omxPlanId;
@Column(name = "PLAN_ID")
Integer planId;
@Column(name = "FIRST_PAYMENT")
Double firstPayment;
public Integer getOmxPlanId() {
return omxPlanId;
}
public void setOmxPlanId(Integer omxPlanId) {
this.omxPlanId = omxPlanId;
}
public Integer getPlanId() {
return planId;
}
public void setPlanId(Integer planId) {
this.planId = planId;
}
public Double getFirstPayment() {
return firstPayment;
}
public void setFirstPayment(Double firstPayment) {
this.firstPayment = firstPayment;
}
}
【问题讨论】: