Ошибка получения Jpa Repository не может быть сериализована при получении данных из базы данных - PullRequest
1 голос
/ 03 апреля 2019

У меня проблема при попытке получить данные с помощью репозитория JPA,

каждый раз, когда я пытаюсь получить данные, всегда получаю ошибку java.lang.ClassCastException: shurl.model.Shurl не может быть приведен к java.io.Serializable,

Я пытался исследовать решение, но до сих пор не нашел какой-либо подсказки для решения этой проблемы

вот моя ошибка: enter image description here

2019-04-03 07:36:17.434 ERROR 19348 --- [nio-5001-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: shurl.model.Shurl cannot be cast to java.io.Serializable] with root cause

java.lang.ClassCastException: shurl.model.Shurl cannot be cast to java.io.Serializable

и вот мой код в репозитории jpa

package shurl.repository

import shurl.model.Shurl
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.jpa.repository.Query
import org.springframework.stereotype.Repository
import org.springframework.data.domain.Pageable
import org.springframework.data.domain.Page
import java.time.LocalDate
import java.time.LocalDateTime
import shurl.model.ShurlHistory

@Repository
interface ShurlHistoryRepository : JpaRepository<ShurlHistory, String> {
    @Query("select b.* from shurl a " +
            "left join shurl_history b on b.shurl_code = a.shurl_code " +
            "where a.shurl_code = :code",nativeQuery = true )

    fun findShurlHistory(code:String):List<ShurlHistory>?
}

и вот моя модель

package shurl.model

import com.fasterxml.jackson.annotation.JsonIgnore
import javax.persistence.*
import org.apache.poi.hpsf.Decimal
import java.time.LocalDate
import java.sql.Blob
import org.hibernate.type.BlobType
import java.time.LocalDateTime

@Entity
@Table(name = "shurl_history", schema = "dbo")
data class ShurlHistory (
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = true)
    var id:Long?=null,

    @Column(name = "create_date", nullable = false )
    var createDate:LocalDateTime = LocalDateTime.now(),


    @ManyToOne
    @JoinColumn(name = "shurl_code", referencedColumnName = "shurl_code", nullable = true)
    var shurl : Shurl? = null
)

Может кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2019

Если вы ссылаетесь на другой объект, используя столбец без первичного ключа, сделайте указанный объект сериализуемым.

Это известная ошибка , созданная в 2012 году и до сих пор не решенная.

Сделайте Shurl serialzable, и он должен работать:

@Entity
public class Shurl implements Serializable {

    private static final long serialVersionUID = 1L;
}
0 голосов
/ 04 апреля 2019

Я думаю, что нашел решение без сериализуемого, я удаляю свойства id в классе shurl и устанавливаю shurl_code в качестве первичного ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...