- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 JPA 新手。使用 where 子句构建选择查询。我需要从表联系人中选择所有等于字符串名称值的 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;
}
以下是我的 ContactServlet 类代码,我正在尝试编写 CriteriaBuilder 代码。
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.unknownAttribute(AbstractPathImpl.java:117) 处解析属性 [UserName] 在 org.hibernate.jpa.criteria.path.AbstractPathImpl.locateAttribute(AbstractPathImpl.java:214) 处的 org.hibernate.jpa.c riteria.path.AbstractPathImpl.get(AbstractPathImpl.java:185)在com.ContactServlet.doPost(ContactServlet.java:110)在javax.servlet.http.HttpServlet.service(HttpServlet.java:644)在javax.servlet.http.HttpServlet.service(HttpServlet.java:725)在org.apache.catalina.core.ApplicationFilterChain.internal DoFilter(ApplicationFilterChain.java:291) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 在 org.apache.catalina.core.Application FilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:505) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 在 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) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081) 在 org.apache .coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) 在 org.apache.coyote.http11.Http11NioProtocol$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(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 org.apache.tomcat.util.threads.TaskThread$W rappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:745)
最佳答案
尝试:
q1.select(postRoot).where(cb.equal(postRoot.get("userName"), name));
UserName 属性的 u 小写。
关于java - JPA 中的 CriteriaBuilder - where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27240294/
我正在尝试更改以下 HQL 以使用 JPA 标准: select distinct d from Department d left join fetch d.children c where d.p
我对 CriteriaBuilder API 有疑问: 我想计算一列的结果,并返回该计数的结果以及该列的不同值的列表。 | Table_fruit | count(Tab
有什么区别: 在 Builder 上的第一次测试运行: Predicate predicate = root.get(PersonEntity_.name).in(names); criteriaBu
我正在开发一个经常使用 CriteriaBuilder.Coalesce 的大型代码库。和 Root 。例如, criteriaBuilder.coalesce(root.get('adjustedW
我有这样的代码 @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) public Re
我必须重写一些代码,但在互联网上找不到正确的信息。原始部分如下所示: String query = "select * from sublog_type_map_v where 1 = 1"; if
这是我从 CriteriaBuilder 获得的 hibernate 查询: select generatedAlias0 from MyObject as generatedAlias0 where
SELECT * FROM Emp_Main WHERE status = 'QUIT' AND to_Char(effective_date,'YYYY')= '2018'; 在此示例中,我已将代码
我正在尝试使用 @Embeddable与 CriteriaBuilder过滤父结果 Entity基于嵌入的属性。我使用 Eclipse Link 来生成元数据类。 这是嵌入的类/实体: @Embedd
谁能提供一个如何使用 CriteriaBuilder 编写案例查询的示例? 最佳答案 以下是使用 CriteriaBuilder 的示例 case 表达式(这适用于 JPA 2): Hashtable
我想写这个SQL查询 SELECT * FROM A LEFT OUTER JOIN B ON A.IDRESOURCE=B.IDRESOURCE AND B.IDLANGUAGE=22; 使用 J
我想将日期与数据库中的时间戳进行比较。我目前使用的是 predicates.add(criteriaBuilder.between(eventRoot.get("time"), dBegin, dEn
使用 Criteriabuilder 编写查询时,如何在两列上添加相等条件?例如: CriteriaBuilder cb = entityManager.getCriteriaBuilder(); C
我有一个实体 @Entity @Table(name = "`petition`") @Getter @Setter public class Petition extends Auditable {
嗯,我正在使用 CriteriaBuilder 和 PredicateList 来处理 JPA 并从数据库中提取信息,事实是它包含带重音的数据,我需要进行搜索,即使我搜索不带重音的单词,我也会找到带重
我有一个要附加到 or 条件中的列表 我面临的问题是当我遍历 List 并将其添加到 CategoryBuilder 然后它采用最后一个 Predicate 例子如下: public static S
我正在尝试计算给定的纬度/经度和距离,并且只返回落在该圆距离内的行(数据库也有纬度/经度坐标)。我不知道的是我会怎么做。我目前正在使用 native SQL 并使用纯文本和计算它的半正弦公式,如果我是
我正在尝试了解如何从联接中仅选择记录上的最新日期。我的 People 实体与 Membership 实体相结合。我的成员(member)实体有一个 RefMembershipStatus 实体。我试图
我目前正在这样。 final CriteriaBuilder builder = ...; final boolean flag = ...; if (flag) { builder.isTr
我有这样的 SQL 语句: SELECT * FROM person inner join (select max(validityId) as maxID from person group by
我是一名优秀的程序员,十分优秀!