我需要使用 spring 数据 jpa 在 postgres 中将实体类的两列映射为 json。在阅读了多个 stackoverflow 帖子和 baeldung 帖子后,
如何使用 JPA 将映射 JSON 列映射到 Java 对象
https://www.baeldung.com/hibernate-persist-json-object
我做了如下配置。但是,我面临错误“错误:列“标题”的类型为 json,但表达式的类型为不同的字符“
请提供一些解决此问题的指针。
我有一个实体类如下
@Entity
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class Task {
@Id
@GeneratedValue(strategy = IDENTITY)
private Integer id;
private String url;
private String httpMethod;
@Convert(converter = HashMapConverter.class)
@Column(columnDefinition = "json")
private Map<String, String> headers;
@Convert(converter = HashMapConverter.class)
@Column(columnDefinition = "json")
private Map<String, String> urlVariables;
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个测试类来测试实体是否持久化。在运行这个 junit 时,下面的测试用例失败,错误如下
@SpringBootTest
class TaskRepositoryTest {
private static Task randomTask …Run Code Online (Sandbox Code Playgroud) 我有一个 Kotlin SpringBoot 项目。这是一个相对简单的 API,可将数据保存到 Postgres JsonB 数据库。我@TypeDef在实体类上使用该注释,但升级到此注释后SpringBoot Version 3.0不再hibernate-core:6.1.7.Final
可用。
这是我的实体类::
import com.vladmihalcea.hibernate.type.json.JsonBinaryType
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.Id
import jakarta.persistence.Table
import org.hibernate.annotations.Type
import org.hibernate.annotations.TypeDef // not available with latest hibernate-core
import java.io.Serializable
import java.security.SecureRandom
import kotlin.math.abs
@Entity
@Table(name = "myTable")
@TypeDef(name = "jsonb", typeClass = JsonBinaryType::class) // not available :(
data class RecommendationEntity(
@Id
open var id: Long = abs(SecureRandom().nextInt().toLong()),
@Type(type = "jsonb")
@Column(columnDefinition = "jsonb")
var data: MyModel
)
data class MyModel( …Run Code Online (Sandbox Code Playgroud)