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

条件:ClassCastException整数到长

司马德水
2023-03-14

我正在使用Hibernate4.2和PostgreSQL。

我有这张表在邮局:

  id bigserial NOT NULL (chave primária)
  name text

而我的实体是:

@Column(name="name")
private String name;

    //getters and setters }
public List<Customer> getByName(String name){
        Session session = HibernateUtil.getSessionFactory().openSession();
        Criteria selection = selection.createCriteria(Customer.class);

        selection.add(Restrictions.eq("name", name));

        return selection.list(); //error here!
}

当我编写实体时,我将id设置为整数,但是,我从int改为Long,并开始出现以下错误:

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
    at org.hibernate.type.descriptor.java.LongTypeDescriptor.unwrap(LongTypeDescriptor.java:36)
    at org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$1.doBind(BigIntTypeDescriptor.java:57)
    at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:93)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275)
    at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1969)
    at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1940)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1875)
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836)
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1816)
    at org.hibernate.loader.Loader.doQuery(Loader.java:900)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342)
    at org.hibernate.loader.Loader.doList(Loader.java:2526)
    at org.hibernate.loader.Loader.doList(Loader.java:2512)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2342)
    at org.hibernate.loader.Loader.list(Loader.java:2337)
    at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:124)
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1662)
    at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:374)
    at com.teste.hibernate.dao.CustomerDAO.getByName(CustomerDAO.java:77)
    at Teste.main(Teste.java:44)

谢谢:)

共有1个答案

吴均
2023-03-14

Postgres通常与Serial(Integer)或BigSerial(Long)一起工作,并且还自动生成序列

尝试以下方法:

  1. @generatedvalue更改为@generatedvalue(strategy=generationtype.identity)并查看是否有效。
  2. 像这样创建SequenceGenerator

对于第二种选择

@SequenceGenerator(name = "tbl_costumer_id_gen", sequenceName = "tbl_costumer_id_gen",allocationSize=1) 
@Id 
@GeneratedValue(GenerationType.SEQUENCE, generator="tbl_costumer_id_gen") 
@Column(name="id") 
private Long id;
 类似资料:
  • 有谁知道如何修复这个类投射异常错误?我得到:“线程”main“中的异常java.lang.ClassCastException:java.util.HashMap$Entry不能转换为java.lang.Integer? 我的问题是,我以为我调用的是那个位置的整数,但显然不是?这项作业两小时后到期,所以任何帮助都是非常感谢的。评论应该告诉你发生了什么。

  • 我需要 在Hibernate条件中。由于这个问题,我知道如何将分组结果作为的列表: 我不知道如何添加HAVING子句。我想,它类似于,但是我如何引用计数呢? 有没有办法在查询中引用结果元组元素?

  • 这是一个例外。。 Java语言lang.ClassCastException:org。XHTMLender。提供BlockBox无法转换为组织。XHTMLender。牛顿表。桌子盒

  • 我有一个用于java程序的库。 它包含下一行: 它在java8上运行正常,但在我尝试在java11上启动它之后,我得到了ClassCastException JAVAClassCastException:类jdk。内部的加载器。ClassLoaders$AppClassLoader不能强制转换为java类。网URLClassLoader 有可能解决这个pb而不修改库吗?AFAIK,Java应该向下

  • 问题内容: 我认为这里肯定有些微妙的事情我不知道。考虑以下: 假设您的main方法包含以下内容: 您将收到一条无法转换为的消息。 谁能告诉我为什么?我的理解是,当您尝试将对象强制转换为无法强制转换的类型时,会抛出该错误。也就是说,对于不是实例的子类(引用文档)。例如: 看来我可以做到。如果只是一个而不是一个数组,我们可以毫无问题地获取并强制转换它。为什么数组会破坏这一点? 谢谢。 问题答案: 使用

  • 是否有更好的方法将转换为?