首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JPA将UUID设置为查询参数

JPA将UUID设置为查询参数
EN

Stack Overflow用户
提问于 2018-01-07 00:28:12
回答 1查看 1.2K关注 0票数 0

我在使用JPA执行delete query时遇到问题。

问题是,我正在删除基于UUID的行。

为了完成删除任务,我在JPA query setParameter方法中设置了UUID参数。但是这并没有给出CAST的问题。

因此,我使用了以下内容:

代码语言:javascript
运行
复制
query.setParameter("fileUuid", String.class.cast(fileUuid));

但它又一次给出了例外。

这是代码--

实体类:

代码语言:javascript
运行
复制
@Id
@Type(type = "pg-uuid")
@GenericGenerator(name = "uuid-gen", strategy = "uuid2")
@GeneratedValue(generator = "uuid-gen")
@Column(name = "file_uuid", updatable = false, nullable = false)
private UUID fileUuid;

Manager类:

代码语言:javascript
运行
复制
@Override
public void deleteFile(UUID fileUuid) {
    final String ql = "delete from " + type.getName() + "  
    where file_uuid = :fileUuid";
    Query query = getEntityManager().createQuery(ql);
    query.setParameter("fileUuid", 
    String.class.cast(fileUuid));
    try {
        query.executeUpdate();
    } catch (NoResultException ex) {
        return;
    }
}

异常日志:

代码语言:javascript
运行
复制
java.lang.ClassCastException: Cannot cast java.util.UUID to java.lang.String
        at java.lang.Class.cast(Class.java:3369)

更新:

以下是我的pom.xml中的依赖项:

代码语言:javascript
运行
复制
    <dependency>
      <groupId>org.hibernate.javax.persistence</groupId>
      <artifactId>hibernate-jpa-2.1-api</artifactId>
       <version>1.0.0.Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
       <version>4.3.11.Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>4.3.11.Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-ehcache</artifactId>
      <version>4.3.11.Final</version>
    </dependency>
EN

回答 1

Stack Overflow用户

发布于 2018-01-07 16:58:44

使用super.removeById是可行的解决方案-

代码语言:javascript
运行
复制
@Override
public void deleteFile(UUID fileUuid) {
    T entity =getEntityManager().find(type, id)
    if (entity != null) {
      getEntityManager().remove(entity);
    }        
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48129368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档