1
我想將多個複選框值存儲在單個數據庫列中。我不想在與@OneToMany
分開的表中存儲。如何通過JDBC中的ResultSet#getString()獲得JPA持久化的String []列?
這是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"); // ???????????
要不我怎麼能在像這樣在其他程序中,我可以像焦炭分裂成爲一個可以理解的格式來格式化它「;」 :
FISH;SOUP;BANANA 1KG
*我不想在一對多*一個單獨的表來存儲:你真的應該重新考慮這一點。否則,你最終會出現非規範化且難以使用的數據模型。 – BalusC
謝謝@BalusC。原因是我有大量的數據,每個Cook實體都有至少10個Foods。該計劃應該很快,加入將影響表現。 我不能有一個'FOOD(在DB)'和'ARRAY_FOOD(不在DB)'列,它會以'X; Y; Z;'的格式將其寫入'FOOD'並將其讀入數組' ARRAY_FOOD'。所以在JSF中,我將使用'ARRAY_FOOD',但是在寫入時它會寫入數據庫的'FOOD'列? – ahmet