いつもお世話になっています
今回はJPQLで問い合わせをする際、パラメーター指定でInteger型を指定したいのですが、エラーが出てしまいます
String型とInteger型の不整合が起こっていると思われるのですが、
どこをどう修正していいかわかりません
どうか皆さんの知恵を貸してください>< お願いします
Emtity.java
java
1 public List<ModelEntity> whereModelID(String word){ //人モデルIDから検索する 2 Integer wordID = Integer.parseInt(word); 3 TypedQuery<ModelEntity> q = (TypedQuery<ModelEntity>) em.createQuery("SELECT c FROM ModelEntity c WHERE c.humanmodelid LIKE :valueword",ModelEntity.class); 4 q.setParameter("valueword","%"+ wordID+"%"); //:valuewordにwordをセットする 5 return q.getResultList(); //JPQLを実行する 6 }
ModelEntity.java
java
1 2@Entity 3@Table(name = "human_table") 4public class ModelEntity implements Serializable{ 5 @Id 6 @GeneratedValue(strategy = GenerationType.AUTO) //主キーの自動生成 7 private Integer humanmodelid ; //人モデルID 8 @NotNull 9 private String humanmodelpath ; //人モデルパス 10 @NotNull 11 private Integer height; //身長 12 13 14
エラーメッセージ
Caused by: java.lang.IllegalArgumentException: You have attempted to set a value of type class java.lang.String for parameter valueword with expected type of class java.lang.Integer from query string SELECT c FROM ModelEntity c WHERE c.humanmodelid LIKE :valueword. at org.eclipse.persistence.internal.jpa.QueryImpl.setParameterInternal(QueryImpl.java:944) at org.eclipse.persistence.internal.jpa.EJBQueryImpl.setParameter(EJBQueryImpl.java:607) at util.EntityDb.whereModelID(EntityDb.java:140) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081) at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153) at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4867) at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:656) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:836) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:895) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:835) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608) at org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:72) at org.jboss.weld.module.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:895) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:835) at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:374) at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4839) at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4827) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212) ... 52 more
あなたの回答
tips
プレビュー