Java JPA 错误;您试图从查询字符串中设置类型类数据预期类型 int 的值
Posted
技术标签:
【中文标题】Java JPA 错误;您试图从查询字符串中设置类型类数据预期类型 int 的值【英文标题】:Java JPA error; You have attempted to set a value of type class data expected type of int from query string 【发布时间】:2018-04-01 23:23:49 【问题描述】:我在下面有 java JPA 项目的错误。有人可以帮我吗?谢谢你。
键入异常报告
消息 您已尝试为参数 cityMakeMakeID 设置类型为 data.CityMake 的值,其中预期类型为 int 从查询字符串中 Select f from Foodmodel f WHERE f.cityMakeMakeID = :cityMakeMakeID order by f .foodModelName。
说明服务器遇到了阻止它完成请求的意外情况。
例外
java.lang.IllegalArgumentException:您已尝试为参数 cityMakeMakeID 设置类型为 data.CityMake 的值,其中预期类型为 int 从查询字符串 Select f from Foodmodel f WHERE f.cityMakeMakeID = :cityMakeMakeID order by f.foodModelName .
org.eclipse.persistence.internal.jpa.QueryImpl.setParameterInternal(QueryImpl.java:933)
org.eclipse.persistence.internal.jpa.EJBQueryImpl.setParameter(EJBQueryImpl.java:593)
dao.FoodModelDAO.getModels(FoodModelDAO.java:69)
servlets.StartServlet.processRequest(StartServlet.java:67)
servlets.StartServlet.doGet(StartServlet.java:86)
javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
注意根本原因的完整堆栈跟踪可在服务器日志中找到。
--------------------------------FoodModelDAO.java------------ ---------
公共类 FoodModelDAO
public static List<Foodmodel> getModels(int makeid)
CityMake make = CityMakeDAO.findMakeById(makeid);
EntityManager em = DBUtil.getEmFactory().createEntityManager();
String qString = "Select f from Foodmodel f " +
"WHERE f.cityMakeMakeID = :cityMakeMakeID " +
"order by f.foodModelName";
TypedQuery<Foodmodel> query = em.createQuery(qString, Foodmodel.class);
query.setParameter("cityMakeMakeID", make );
try
List<Foodmodel> models = query.getResultList();
return models;
catch(NoResultException e)
return new ArrayList<Foodmodel>();
finally
em.close();
---------------FoodModel.java 2018 年 4 月 2 日发布----------- 我再次更新了 FoodModel 帖子。
enter code here
@Entity
public class FoodModel
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long foodModelId;
private String foodModelName;
@OneToOne
private CityMake cityMakeMakeID;
public FoodModel()
foodModelName = "";
public FoodModel(Long m, String v, CityMake makeObj)
foodModelId = m;
foodModelName = v;
//citymake = makeObj;
cityMakeMakeID = makeObj;
public Long getModelId()
return foodModelId;
public void setModelId(Long id)
foodModelId = id;
public String getModelName()
return foodModelName;
public void setModelName(String value)
this.foodModelName = value;
public CityMake getMake()
//return citymake;
return cityMakeMakeID;
public void setMake(CityMake make)
//this.citymake = make;
this.cityMakeMakeID = make;
【问题讨论】:
公共食品模型(整数 foodModelID) this.foodModelID = foodModelID; 【参考方案1】: query.setParameter("cityMakeMakeID", makeid);
为什么?您正在为 Foodmodel.class 创建一个类型化查询,因此参数类型应与模型对应(查看 FoodModel,属性定义为 int)。
@Column(name = "CityMake_MakeID")
private int cityMakeMakeID;
如果您的模型是这样定义的,那么您的操作方式应该可以:
@OneToOne //Or any type of relation that matches your needs
private CityMake cityMakeMakeID; //See the variable Type
【讨论】:
以上是关于Java JPA 错误;您试图从查询字符串中设置类型类数据预期类型 int 的值的主要内容,如果未能解决你的问题,请参考以下文章
在基于 Visual Studio Code Maven 的 Java 项目中设置类路径
在 scikit-learn 的逻辑回归中设置类权重的数学原理是啥?