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

jpa类型不兼容

苏志
2023-03-14

我正在使用JPA,列类型为:

@Column(name = "name", columnDefinition = "bpchar(1)")
private String name;

我使用PostgreSql作为我的数据库,它支持bpchar类型,现在我尝试为我的测试添加H2,但问题是,当我运行测试时,我得到以下结果:

org.h2.jdbc.JdbcSQLNonTransientException: Type de données inconnu: "bpchar"
Unknown data type: "bpchar"; SQL statement:

是否有其他方法可以实现这一目标?

共有1个答案

上官鸿朗
2023-03-14

如果您使用的是Postgres,那么将其映射为字符即可:

@Column(name = "name", columnDefinition = "bpchar(1)")
private Character name;

或者,您可以使用属性转换器:


@Convert(converter = BpCharConverter.class)
@Column(name = "name", columnDefinition = "bpchar(1)")
private String name;

public class BpCharConverter implements AttributeConverter<String, Character> {

    @Override
    public Character convertToDatabaseColumn(String attribute) {
        return attribute == null
                ? null
                : // convert it to Character
    }

    @Override
    public String convertToEntityAttribute(Character dbData) {
        return dbData == null
                ? null
                : String.valueOf( dbData );
    }
}
 类似资料:
  • 我定义jackoson序列化器并将其添加到java类中,如下所示: 编译器出现以下错误: 注释的定义为: 如果我从ReportFilterDeserializer中删除泛型attibute,它将通过编译。我不明白编辑为什么抱怨。

  • 我按照这个教程:https://github.com/codepath/android_guides/wiki/Fragment-Navigation-Drawer 现在我在这一点上: 我的问题是这条线... 显示一个错误:不兼容的类型。需要android。应用程序。FragmentManager发现:android。支持v4.app。碎片管理器。 我看到了一些帖子,但它们不适合我。 我用AppC

  • 我正在尝试使用reverfit和RxJava在我正在使用的应用程序中的自定义视图中进行API调用,但是当我尝试订阅来自我的reverfit API调用的Observable时,遇到了一个不兼容类型错误。 我的改装界面: } 和位于自定义视图的onFinishInflate()中的改装调用: 当我构建项目时,在自定义视图中以可观察的 query=...开头的行中遇到了不兼容类型错误: 错误:(60,

  • 我试图编译一个从SourceForge得到的仍在开发中的项目。这是它的地址:。https://sourceforge.net/p/groove/code/5475/tree/groove/trunk/我知道这个项目经过了很好的验证,它没有任何错误,但是当我要编译它的时候,我遇到了这个编译错误: 错误在这个文件的第370行:https://sourceforge.net/p/groove/code/

  • 我正在尝试创建一个查找器,它需要几个谓词并减少它们: