我想在一个DB列中存储多个复选框值。我不想将@OneToMany
存储在单独的表格中。
这是JPA实体:
@Entity
@Table(name="COOK")
...
@Column(name="ARRAY_FOOD" )
private String[] arrayFood;
...getter and setters...
以下是复选框值(JSF):
<h:selectManyCheckbox value="#{foodBean.selectedModel.arrayFood}" layout="lineDirection">
<f:selectItem itemLabel="FISH" itemValue="FISH" />
<f:selectItem itemLabel="SOUP" itemValue="SOUP" />
<f:selectItem itemLabel="CAKE" itemValue="CAKE" />
<f:selectItem itemLabel="1/2 WATER" itemValue="1/2 WATER" />
<f:selectItem itemLabel="BANANA 1KG" itemValue="BANANA 1KG" />
</h:selectManyCheckbox>
JPA按如下方式存储提交的检查值:
Column Name Data Type Sample Data
----------------------------------------
ARRAY_FOOD RAW (255) ACED0005757200135B4C6A6176612E6C616E672E537472696E673BADD256E7E91D7B4702000078700000000174000141
如何在另一个程序中通过ResultSet
获取原始数组?
String array = rs.getString("ARRAY_FOOD"); // ???????????
或者我如何以可理解的格式对其进行格式化,就像在其他程序中一样,我可以用char来分割它,如“;” :
FISH;SOUP;BANANA 1KG
答案 0 :(得分:0)
默认情况下,不受支持的可序列化类型数据库类型是序列化的。您需要使用Java序列化将这些类型恢复到JPA之外。
如果使用EclipseLink,您可以使用@Converter转换数组。
您也可以使用get / set方法转换值,参见
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes#Conversion