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 项目中设置类路径

idea中设置类添加删除线条

在 Angular 模板中设置类值

在 scikit-learn 的逻辑回归中设置类权重的数学原理是啥?

如何在 DecisionTreeClassifier 中设置类权重以进行多类设置

如何使用 useStyle 在 Material Ui 中设置类组件的样式