Java 枚举、JPA 和 Postgres 枚举 - 如何让它们一起工作?

2023-11-27

我们有一个带有 postgres 枚举的 postgres 数据库。我们开始将 JPA 构建到我们的应用程序中。我们还有 Java 枚举,它反映了 postgres 枚举。现在最大的问题是如何让 JPA 一方面理解 Java 枚举,另一方面理解 postgres 枚举? Java 方面应该相当简单,但我不知道如何做 postgres 方面。


实际上,我一直在使用一种比 PGObject 和转换器更简单的方法。由于在 Postgres 中,枚举可以很自然地转换为文本,因此您只需要让它做它最擅长的事情。如果 Arjan 不介意的话,我会借用他的情绪例子:

Postgres 中的枚举类型:

CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');

Java中的类和枚举:

public @Entity class Person {

  public static enum Mood {sad, ok, happy};

  @Enumerated(EnumType.STRING)
  Mood mood;

}

@Enumerated 标签表示枚举的序列化/反序列化应该以文本形式完成。没有它,就用int,比什么都麻烦。

此时您有两个选择。你要么:

  1. Add 字符串类型=未指定到连接字符串,如中所述JDBC 连接参数这让 Postgres 猜测右侧类型并充分转换所有内容,因为它收到类似“enum =unknown”的内容,这是一个它已经知道如何处理的表达式(将 ? 值提供给左侧类型反序列化器) 。这是首选选项,因为它应该一次性适用于所有简单的 UDT,例如枚举。

    jdbc:postgresql://localhost:5432/dbname?stringtype=unspecified
    

Or:

  1. 在数据库中创建从 varchar 到 enum 的隐式转换。因此,在第二种情况下,数据库收到一些赋值或比较,例如“enum = varchar”,并且它在其内部目录中找到一条规则,表明它可以通过 varchar 的序列化函数传递右侧值,然后通过 varchar 的反序列化函数传递右侧值。枚举。这比实际需要的步骤要多;并且目录中有太多隐式转换可能会导致任意查询产生不明确的解释,因此请谨慎使用。演员阵容创作如下:

    创建演员阵容(角色随情绪变化),以 INOUT 为隐式;

应该就这样工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 枚举、JPA 和 Postgres 枚举 - 如何让它们一起工作? 的相关文章

  • 测试前设置TestNG的输出目录

    我正在使用 Eclipse 运行一些 TestNG 测试 使用 XML 文件 右键单击 作为 TestNG 套件运行 我仅将 Maven 用于依赖项 而不用于运行测试 有没有办法在代码中设置输出目录 例如 System out printl
  • onchange 使用 radioChoice 获取当前值

    我尝试使用 radioChoice onChange 从无线电表单中获取选定的值 但似乎无法真正找到解决方案 onEvent 函数被调用 但从这里我不太确定如何获取该值 Code RadioChoice
  • 如何在 ListViewer 中选择一个元素

    我正在尝试查找并选择一个元素ListViewer 我将字符串与中的每个元素进行比较ListViewer 我可以获得元素的索引 但我不知道如何在Listviewer String pattern elementText gettext Str
  • 如何在 PostgreSql 的预订表中找到第一个空闲时间

    预订表包含预订开始日期 开始时间和持续时间 工作日的开始时间为工作时间 8 00 18 00 以半小时为增量 持续时间也以每天半小时为增量 CREATE TABLE reservation startdate date not null s
  • 将 Scala 库转换为 DLL (.NET)

    我正在尝试从 scala 类创建一个 Dll 我将 IntelliJ 与 SBT 一起使用 我已经找到了一种使用 ikvm converter 将 jar 文件转换为 Dll 的方法 现在的问题是 当我在 SBT 下使用 package 从
  • 为什么此代码会失败并显示 sourceCompatibility=1.8 [重复]

    这个问题在这里已经有答案了 以下代码在使用 sourceCompatibility 1 7 或 1 6 编译时有效 但在切换到 1 8 后失败 public class Java8Wat interface Parcelable stati
  • 空手道弹簧整合

    我们有一个 Spring MVC 应用程序 是否可以在 Karate 中集成 spring 上下文 假设通过 Karate runner 绑定 SpringJunitRunner 或者通过 spring 上下文查找 bean 在空手道中一切
  • 配置 Restlet 以在 Google App Engine 上返回 JSP?

    我开发了一个 Restlet 应用程序 我想通过 Restlet 返回一个 URL 请求的 JSP 文件 在不使用重定向的情况下如何实现此目的 IE 假设我在 mydomain com 上有文件 contact jsp 并且我希望人们能够访
  • 在 pom 中添加 selenium 依赖项后,AWS Lambda Jar 无法压缩

    这是一个奇怪的错误 将 selenium 依赖项添加到我的 maven 项目的 pom 并将其上传到 lambda 后 它说无法解压缩文件 然而 在删除依赖项之后 lambda 能够很好地解压缩文件 但是它会出现一个随后找不到的类 我尝试一
  • 亚马逊 AWS Java API。我看不到我的 AMI

    我正在使用 Amazon AWS 的 Java API 我成功进行了身份验证 然后获取了所有图像 但我的图像不在其中 我的 AMI 是私有的 但我想自从我经过身份验证后我仍然会看到它们 这是我的来源 final AmazonEC2 clie
  • 为什么在 GWT(或任何 Web 应用程序)中使用命令模式?

    根据这个视频 7 50 Google 建议在其请求处理 API 之上使用命令模式 还有一个看起来很有帮助的项目gwt 调度 http code google com p gwt dispatch 实现该模式 根据 gwt 调度我需要为每个命
  • 我怎样才能设置在中间呢?

    我尝试用Java画一个矩形 我设置了框架大小 800 400 和可调整大小 假 矩形的x 50 y 50宽度 700高度 300 为什么它不在中间 谢谢 如果没有任何其他证据 我会guess你已经覆盖了paint类似的方法JFrame并直接
  • 如何使用 Dapper 从 .NET 7 执行 Postgresql 函数,而不列出所有参数的数据类型

    我正在尝试将我的 NET 5 Web API 代码传输到 NET 7 我有一个名为的单例服务DataManager它实现了接口IDataManager 其中一项功能是Execute还有其他 C 函数 称为 Get GerMany 以及 In
  • 与嵌套泛型集合的混淆

    请帮助我理解为什么add1 and add4 报告错误以及原因add2 and add3 不 具体来说 请举例说明如果编译器允许其中每一个进行编译 则会产生不良后果的示例 class InnerTypeConfusion interface
  • Maven“部署”导致签名操作后代码重新打包(BAD 签名)

    我想将一个工件部署到 Sonatype OSS 存储库 当我使用以下命令进行部署时 签名无效 mvn clean source jar javadoc jar install gpg sign deploy gt gpg verify ta
  • Protobuf RPC 在 Hadoop 2.2.0 单节点服务器上不可用?

    我正在尝试在按照本教程安装的本地单节点集群上运行 hadoop 2 2 0 mapreduce 作业 http codesfusion blogspot co at 2013 10 setup hadoop 2x 220 on ubuntu
  • 扩展 Lombok 困难

    我想创建一个注释处理程序来扩展 Java 语言 然而 由于 SCL 文件的原因 我无法轻松做到这一点 我想知道 Lombok 开发人员是否故意让它变得如此困难 如果我尝试扩展 JavacAnnotationHandler 它无法在 lomb
  • JTextPane 缩进

    有没有办法缩进文本块JTextPane import javax swing import java awt import javax swing text StyledDocument public class SimpleTextPan
  • 没有 WindowManager.LayoutParams.TYPE_PHONE 的粘性覆盖

    我所说的粘性是指一个不会通过调用启动器意图而关闭的窗口 intent addCategory Intent CATEGORY HOME 以前这是用完成的WindowManager LayoutParams TYPE PHONE 但此类型现已
  • java中的^运算符[重复]

    这个问题在这里已经有答案了 谁能用一些例子解释一下java中 运算符的使用 这与大多数语言中的 相同 只是异或 false false false true false true false true true true true fals

随机推荐

  • 使用撰写文本进行链接

    我找不到如何链接我的Text 使用 Jetpack Compose 在撰写之前我要做的就是 Linkify addLinks myTextView Linkify EMAIL ADDRESSES or Linkify WEB URLS 显然
  • Flask-SQLAlchemy 中连接后的过滤

    我有两张桌子 location and country 正在尝试查询 在我的烧瓶应用程序中由以下模型表示 from sqlalchemy import Column DateTime ForeignKey Integer Numeric S
  • 将 URL 中的 HTTP 参数与 Android Intent Filter 相匹配

    我正在尝试组合一个意图过滤器 以便在浏览器中访问某个 HTML URL 时启动我的应用程序 当它是标准网址 例如 www stonyx com 时 我这样做没有任何问题 但是 我需要将 URL 与 HTTP 参数 如 www stonyx
  • 使用 Visual studio 2013 Professional 的 Windows Phone 8 应用程序 [重复]

    这个问题在这里已经有答案了 在将 Visual studio 2010 升级到 2012 2013 的混乱中 2013 年是创建 Windows 商店应用程序的唯一选择 但没有给出对 Windows Phone 应用程序开发的支持的清晰图片
  • 在java中将二维二进制矩阵转换为黑白图像

    我是java新手 我现在有只有 1 和 0 的 2D 二进制矩阵 我想将其保存为具有相同宽度和高度的jpg图像 黑白 我怎么能意识到这一点呢 我尝试了下面的代码但失败了 说 java lang IllegalArgumentExceptio
  • 如何建立 .NET 开发树? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 如何建立 NET 开发树 我使用这样的结构 projectname config where I put the configuration files doc where I put a
  • 当我输入“cd ~”时,“~”是什么目录?

    我刚开始使用 SSH 但是当我登录时 我最终会进入目录 通常与 FTP 进入时的目录相同 我仍然可以转到 但我不知道 是什么意思 家 它与 的关系在哪里 或者我怎样才能找到 是当前登录用户主目录的别名 要找出它到底在哪里 请输入pwd 代表
  • 两个文件包含 main() Visual Studio 的定义?

    我在 Visual Studio 2008 专业版中创建了一个项目 该项目为每个作业包含一个 cpp 文件 如下所示 Source Files 233 cpp test cpp 每个文件都包含 main 的定义 操作 CTRL F5 Err
  • 更新视图控制器之间的状态栏样式

    In my info plist 我有的文件View controller based status bar appearance set to YES 我有一个FirstViewController状态栏隐藏的地方 In my Secon
  • 如何从 lxml 获取原始 XML?

    我使用以下代码来定位 div parser etree HTMLParser tree etree parse StringIO page parser div tree xpath div class content 0 我唯一的问题是
  • clang 完成不起作用

    我为 vim 安装了 clang complete 但它不起作用 例如 当我输入std 在使用 vim 的 c 文件中 vim 窗口的底部显示 User defined completion U N P Pattern not found
  • java.lang.ClassNotFoundException:TopologyMain

    我正在尝试向本地风暴集群提交一个简单的字数统计拓扑 首先 我尝试使用 Maven 然后使用 Storm 命令行客户端 我使用 eclipse 创建了 JAR 文件 但是 它抛出主类未找到异常 谁能告诉我可能是什么问题 我在下面附上代码和异常
  • 如何在R中summary中获取群的众数

    我想比较两个不同索赔付款人的 CPT 代码的成本 两者都有平价和非平价提供商 我在用dplyr and modeest mlv 但它没有按预期工作 这是一些示例数据 source CPTCode ParNonPar Key net paid
  • 无法在 Firebase 控制台中创建新项目

    当我在 Firebase 控制台中创建项目时 收到错误 您已超出可以创建的免费 G oogle 项目的最大数量 请尝试在 Google API 控制台中删除未使用的项目或请求增加项目限制 我从 Firebase 控制台中删除了未使用的项目
  • 将点捕捉到一条线

    我有两个 GPS 坐标 它们连接在一起形成一条线 我还有一个 GPS 点 该点靠近该线 但从未完全在线上 我的问题是 如何找到沿线到给定点最近的点 游戏开发者对此有一个答案 它是用 C 编写的 但应该很容易移植 哪个CarlG has 好心
  • Malloc 和 scanf

    我对几种脚本语言相当有能力 但我最终强迫自己学习原始 C 我只是在玩一些基本的东西 现在是 I O 如何分配堆内存 在分配的内存中存储字符串 然后将其吐出 这就是我现在所拥有的 我怎样才能让它正常工作 include
  • 将嵌套的 JSON 解析为 R 中的数据帧

    我在处理非常讨厌的嵌套 JSON 时遇到了麻烦 格式是这样的 matches matchId 1 region BR participants participantId 0 teamId 200 stats winner true cha
  • Symfony2 - 仅限匿名用户而非用户访问登录和注册页面

    我有一个带有登录表单的网站 成功登录后 我被重定向到索引 但是当我单击后退按钮时 它仍然让我查看登录表单 这不太好 我希望只有匿名查看者才能访问登录表单 而已经登录的用户则无法访问 在 symfony2 中有一个简单的方法可以做到这一点吗
  • 没有可编译的体系结构(ONLY_ACTIVE_ARCH=YES,活动 arch=armv7,VALID_ARCHS=armv6 i386)

    我在构建 iOS 应用程序时遇到此错误 没有可供编译的架构 ONLY ACTIVE ARCH YES active arch armv7 VALID ARCHS armv6 i386 我在尝试使用 ACAccountTypeIdentifi
  • Java 枚举、JPA 和 Postgres 枚举 - 如何让它们一起工作?

    我们有一个带有 postgres 枚举的 postgres 数据库 我们开始将 JPA 构建到我们的应用程序中 我们还有 Java 枚举 它反映了 postgres 枚举 现在最大的问题是如何让 JPA 一方面理解 Java 枚举 另一方面