Как получить сохраненный JPA столбец String [] с помощью ResultSet # getString () в JDBC? - PullRequest
1 голос
/ 28 сентября 2011

Я хочу сохранить несколько значений флажков в одном столбце БД. Я не хочу хранить в отдельной таблице с @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");  // ???????????

Или как мне отформатировать его в понятном формате, как в другой программе, я могу разделить его на символы типа ";" :

FISH;SOUP;BANANA 1KG

1 Ответ

0 голосов
/ 28 сентября 2011

По умолчанию сериализуемые типы, которые не поддерживаются, базы данных сериализуются.Вам нужно будет использовать сериализацию Java, чтобы вернуть эти типы за пределы JPA.

Вместо этого вы можете использовать @Converter для преобразования массива, как хотите, если используете EclipseLink.

Вы также можете использоватьметод get / set для преобразования значения, см.

http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes#Conversion

...