逗号分隔的字符串与 H2 数据库

Posted

技术标签:

【中文标题】逗号分隔的字符串与 H2 数据库【英文标题】:Comma separated string with H2 Database 【发布时间】:2013-01-29 12:49:53 【问题描述】:

我正在编写针对 H2 的测试并在生产环境中使用 mysql

我有一个这样的实体:

public class User
   private Integer id;
   private String username;
   private Set<String> roles;

我想将我的集合序列化为逗号分隔的字符串。我注意到 h2 文档中的 other_type 但不确定该怎么做。

有什么帮助吗?

谢谢

编辑:实际上我正在使用另一个基于 JDBC 的库。似乎使用了 ResultSet 的 setObject 和 getObject 方法,但不确定如何处理它。

【问题讨论】:

您的意思是要将Set&lt;String&gt; roles 存储为逗号分隔的列表吗?列表可以有多大?如果只有几百个条目,那么使用VARCHAR(32000) 可能就足够了(MySQL 最多支持 65536,H2 没有限制)。 【参考方案1】:

我建议使用 VARCHAR(32000)。 MySQL 和 H2 都支持这一点。请注意,32000 只是限制,并不意味着使用了这么多空间。

【讨论】:

谢谢,varchar 适合我的情况,但不知道如何序列化。 你的意思是,如何将Set&lt;String&gt; 转换为逗号分隔的字符串? 我知道如何转换,但重点是我想使用 setObject(myRoleSet) 而不自己转换。 你不能。 setObject 将为 H2 使用对象序列化,我不知道它会对 MySQL 做什么。在任何情况下,它都不会将其转换为逗号分隔值。

以上是关于逗号分隔的字符串与 H2 数据库的主要内容,如果未能解决你的问题,请参考以下文章