逗号分隔的字符串与 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 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在 VBA 逗号分隔列表中的字符串(而不是数字)上加上引号?

逗号分隔的字符串与List互转

excel另存为csv打开后有大量逗号是怎么回事?

带有逗号分隔的字符串条目的熊猫数据框,更改为唯一的逗号分隔的条目

去掉字符串最后一个逗号,并按逗号分隔插入数据

mssql,逗号分隔的字符串转换成一列数据