当前位置: 首页 > 知识库问答 >
问题:

JPA-WHERE子句中的CriteriaBuilder

乌翔
2023-03-14

我是JPA的新手。使用where子句构建select查询。我需要从表Contacts中选择所有等于字符串名称值的ContactName。

CREATE TABLE Contacts (
ContactId BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
ContactName VARCHAR(100) NOT NULL,
ContactEmailID VARCHAR(100) NOT NULL,
 UserName VARCHAR(100) NOT NULL,
 INDEX Contact_Names (ContactName)
 ) ENGINE = InnoDB;
     @Entity

   private String UserName; 

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ContactId")
     public long getContactId() {
        return ContactId;
    }

    public void setContactId(long contactId) {
        ContactId = contactId;
    }


    @Basic
    @Column(name = "UserName")
    public String getUserName() {
    return UserName;
    }

    public void setUserName(String UserName) {
    this.UserName = UserName;
    }
         EntityManager manager = null;
         EntityTransaction transaction = null;
         try{

        manager = this.factory.createEntityManager();
        transaction = manager.getTransaction();
        transaction.begin();

      CriteriaBuilder cb = manager.getCriteriaBuilder();
       CriteriaQuery<Contact> q1 = cb.createQuery(Contact.class);
       Root<Contact> postRoot = q1.from(Contact.class);

       q1.select(postRoot).where(cb.equal(postRoot.get("UserName"), name));
       TypedQuery<Contact> qry = manager.createQuery(q1);

       List<Contact> result = qry.getResultList();
        for (Contact contactInstance : result)  
        {

         DBContactName = contactInstance.getContactName().trim();
         DBContactEmail = contactInstance.getContactEmailID().trim();

以下是执行我的项目时出现的错误:java.lang.IllegalArgumentException:无法根据在org.hibernate.jpa.criteria.path.abstractPathimpl.unknownatAttribute(abstractPathimpl.java:117)在org.hibernate.jpa.criteria.path.abstractPathimpl.locateAttribute(abstractPathimpl.java:214)在com.contactServlet.doPost(pservlet.service(httpservlet.java:725)在org.apache.catalina.core.applicationFilterChain.InternaldoFilter(applicationFilterChain.java:291)在org.apache.catalina.core.applicationFilterChain.doFilter(applicationFilterChain.java:206)在org.apache.catalina.core.applicationFilterChain.java:206)在org.apache.tomcat.websocket.server.wsfilter.doFilter(IonFilterChain.doFilter(ApplicationFilterChain.java:206)在org.apache.catalina.core.standardWrapperValve.invoke(StandardWrapperValve.java:219)在org.apache.catalina.core.standardContextValve.invoke(StandardContextValve.invoke(StandardContextValve.java:106)在在org.apache.catalina.valves.AbstractAccessLogValve.Invoke(AbstractAccessLogValve.java:610)在org.apache.catalina.core.standardEnginEvalve.Invoke(StandardEnginEvalve.java:88)在org.apache.catalina.connector.coyoteAdapter.Service(CoyoteAdapter.java:534)在$HTTP11ConnectionHandler.process(http11nioProtocol.java:222)在org.apache.tomcat.util.net.nioEndpoint$socketprocessor.dorun(NioEndpoint.java:1566)在org.apache.tomcat.util.net.nioEndpoint$socketprocessor.run(NioEndpoint.java:1523)在java.util.concurrent.threadpoolexecutor.runworker(taskthread.java:61)位于java.lang.thread.run(thread.java:745)

共有1个答案

滑畅
2023-03-14

尝试:

q1.select(postRoot).where(cb.equal(postRoot.get("userName"), name));

UserName属性的u以小写形式表示。

 类似资料:
  • 问题内容: 在JPA中,查询为: 如何在JPA中将类别设置为任何类别?因此,如果传递了null类别,我将简单地忽略category参数,选择所有产品。 问题答案: 如何在JPA中将类别设置为任何类别?因此,如果传递了null类别,我将简单地忽略category参数,选择所有产品。 您必须在此处动态构建查询。使用HQL(这是一个简化的示例): 但是,实际上,我的建议是在此处使用Criteria AP

  • 主要内容:标准WHERE示例WHERE子句用于对数据库应用条件并基于该条件获取数据。 在Criteria API中,AbstractQuery接口的)方法用于设置查询条件。 标准WHERE示例 在这里,我们将在表上执行多个操作。假设该表包含以下记录 - 现在,请按照以下步骤执行操作: - 第1步: 创建一个实体类。在包下创建了类文件。 该类包含三个属性:,,以及所有必需的注解。 文件:StudentEntity.java -

  • 我正在使用Spring JPA执行所有数据库操作。但是,我不知道如何在Spring JPA中从表中选择特定的行(通过简单的WHERE子句连接)? 用户类: 存储库:

  • 我需要确定一个实体是否已经被持久化。不幸的是,我没有这个id,但是如果实体的其他六个字段的值与一个持久化的实体相匹配,我可以确定实体已经持久化了。我正在使用Spring JPA存储库,并且知道我可以执行以下操作: 有没有类似的方法:

  • 本章提供了有关如何使用JDBC应用程序从表中选择记录的示例。 这将在从表中选择记录时使用WHERE子句添加其他条件。 在执行以下示例之前,请确保您具备以下示例 - 要执行以下示例,您可以使用实际用户名和密码替换用户名和密码。 您的MySQL或您正在使用的任何数据库已启动并正在运行。 所需的步骤 (Required Steps) 使用JDBC应用程序创建新数据库需要以下步骤 - Import the

  • 问题内容: 我有一个这样的表“ bla”: 如果我做SQL查询 我只得到ID为2的记录。我没有ID为3的记录,其中fk为空。我以为NULL!=4。看来这是错误的。 为什么会这样呢? 问题答案: 不等于任何东西。您需要明确接受null: 有关处理的更多信息,请参见使用NULL。