所以这是我的问题。我创建了一个表,其中包含mysql DB中的SET数据类型列。 我想得到这个(SET)列的值。
我已完成所有连接配置,一切都在我的代码上运行良好。
如何在Set java object ????
中获取带有resultSet的Set dataType我已经尝试过了。
Java bean代码
public class Valeur {
private Long id;
private Set categoriesValues = new HashSet();
\\getters and setters for the id and the categoriesValues
}
ReultSet代码
private static Valeur map(ResultSet resultSet) throws SQLException {
Valeur valeur = new Valeur();
valeur.setId(resultSet.getLong("id"));
valeur.setCategoriesValues(resultSet.getString("categoriesValues"));
return valeur;
}
ResultSet适用于id,但不适用于Set类型。
由于
答案 0 :(得分:4)
根据https://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html mysql set列映射到Java字符串。
似乎您需要自己拆分返回值以将其转换为Java集。
在您的示例中(未经测试):
String values = resultSet.getString("categoriesValues");
HashSet<String> valuesSet = new HashSet<>();
Collections.addAll(valuesSet , values.split(","));
valuer.setCategoriesValues(valuesSet );
答案 1 :(得分:0)
由于它没有在java.sql.Types中表示,我猜它有点使用,自定义类型在许多RDBMS中都不受支持&#39;
话虽这么说,要检索它可能的值:
ResultSet.getArray(...)
或者
ResultSet.getObject(...)
获取对象。我猜你是否必须手动将它打包到java.util.Set
(或者getObject()可能会返回java.util.Set
?)