【问题标题】:Could not load requested class : datetime无法加载请求的类:日期时间
【发布时间】:2018-12-14 03:38:54
【问题描述】:

我想在 Hibernate 5 中使用 Spring。但在启动过程中我收到此错误:

Caused by: java.lang.ClassNotFoundException: Could not load requested class : datetime

这是我的 POM.xml 配置:

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.0.7.RELEASE</version>
            <type>jar</type>
            <scope>test</scope>
        </dependency>           
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.10.RELEASE</version>               
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>8.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
            <version>1.5.10.RELEASE</version>
        </dependency>           
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>5.0.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.3.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.3.6.Final</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>javax.persistence</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>2.0.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.reactivestreams</groupId>
            <artifactId>reactive-streams</artifactId>
            <version>1.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.3.1.Final</version>
        </dependency>

完整的 Java 错误堆栈: https://pastebin.com/a01yU4vZ

我的模型中有我想在 MariaDB 中使用的日期时间。

@Type(type = "datetime")
@Temporal(TemporalType.DATE)
private DateType datetime;

我想我缺少 Hibernate 的一些 POM 依赖项。你能告诉我为了解决这个问题我必须添加什么依赖项吗?

编辑:

对于我使用的日期时间休眠配置:

    @Column
    @Type(type = "datetime")
    @Temporal(TemporalType.DATE)
    private DateType datetime;

【问题讨论】:

  • 请在此处发布完整的错误堆栈。 PasteBin 被我们中的一些人屏蔽了。

标签: spring hibernate hibernate-mapping hibernate-search


【解决方案1】:

Hibernate Date中没有你拥有的日期时间类型:

Name = date  Java Type = java.sql.Date
Name = calendar_date  Java Type = java.util.Calendar

如果你使用的是 Java 8

NAme = LocalDate  Java Type = java.time.OffsetDateTime
Name = LocalDateTimeType  Java Type = java.time.LocalDateTime

在此Documentation 中查看更多信息

【讨论】:

  • 帖子已更新。请您详细说明一下吗?
【解决方案2】:

对于您的实体字段datetime,您应该使用:

@Column
@Temporal(TemporalType.DATE)
private java.util.Date datetime`

java.time 包中的类之一。在最后一种情况下,您可能还需要添加 following dependency:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-java8</artifactId>
    <version>5.3.2.Final</version>
</dependency>

在这两种情况下,我认为注释 @Type(type = "datetime") 是不必要的。

【讨论】:

  • 不幸的是,问题仍然存在。看起来这个问题与 Spring 的依赖关系有关?
  • 我也尝试从任何地方删除日期时间,但结果是一样的。
  • 一个想法:应该使用 Hibernate 和 Spring 的确切版本?
  • 我发现了问题:这是因为我的 bean 位于我用作模块的远程 jar 中。有没有办法配置 Hibernate 以使用远程模型?
  • 对不起,我不知道你说的远程模块是什么意思
猜你喜欢
  • 1970-01-01
  • 2011-12-23
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多