java - 如何使用 JPA/Hibernate 持久保存声明具有几个整数的固定大小数组的字段的实体

标签 java hibernate jpa collections persistence

我有一个类,其中的字段引用固定大小的整数数组:

class Tracking{
    private int[] tracks;
}

使用 JPA(由 Hibernate 支持)将轨道字段映射到数据库的最佳方法是什么?

tracks 数组将始终包含 10 个元素。我知道 @ElementCollection 注释,但这意味着我最终会得到两个表(Tracking 和 Tracking_tracks),而且似乎没有必要。

想到的唯一方法是使用一个字符串字段,将 10 个数字映射到一个由冒号分隔的字符串中。我将使该字段持久化(一个简单的基本@Column),然后在 getter 和 setter 中我将解析为 int[]。

有什么建议吗?我只是想要一种有效的方式来保存这些信息。 Tracking 对象将永久生成,将有数千个,并且由于整数的数量始终为 10,因此将它们保存到单独的表中并执行联接并选择检索它们似乎有些过分。

最佳答案

这可能取决于您的持久性提供程序。但你可以尝试使用特殊的 column definition并让您的持久性提供程序处理转换。如果这不起作用,许多持久性提供程序都支持自定义类型。在 hibernate 状态下,它们被称为 user types ,打开jpa使用custom field mappings 。您的数据库可能支持原始固定大小字节存储。

关于java - 如何使用 JPA/Hibernate 持久保存声明具有几个整数的固定大小数组的字段的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16862305/

相关文章:

java - 记录器应该始终是最终的和静态的吗?

Java 字符串与命令行参数

java - 如何在 Tripadvisor 中处理气泡评分小部件内的评分?

java - 为什么我不能直接在测试中 @Autowired 我的服务以及为什么我需要 @Autowired 存储库?

java - JPA 实体未保留在我的额外字段中

java - 字符串数组值和 HashMap

java - java中的审计和数据历史

java - JPA 和 Hibernate 有什么区别?

java - 使用继承的 JPA OneToMany

java - 如何从现有数据库正确实现 Hibernate?