2012-01-04 4 views
1

Я пишу сущность, у которой есть дерево, подобное структуре данных. Я использую вложенные объекты в качестве узлов. Эти вложенные узлы должны иметь двумерный булев массив.Постоянный 2D булевский массив в JPA (openJPA)

я могу просто сделать что-то вроде этого:

@Embeddable 
public class AwesomeNode implements Serializable{ 

    private boolean[][] matrix; 

    // getters, setters and other stuff 

} 

Я читал документацию, и хотя все примитивные типы поддерживаются, то кажется, что булевы массивы не являются.

Если это действительно так, я планировал использовать байт [ширина * высота] (явно поддерживается), а затем просто выполнить необходимую логику в конце пользователя. Это хорошая идея? Лучший способ сделать это?

Может ли кто-нибудь предложить руководство.

ответ

1

JPA построен таким образом, что значение поля может быть легко сохранено в реляционной базе данных. Как вы хотите хранить 2D-массив в таблице? Вы должны ответить на этот вопрос, и вы сразу увидите, как его следует сопоставить.

Пример: если вы говорите, что будет бинарное представление, чем вы должны пойти для отображения BLOB

Или, если вы знаете, сколько столбцов будет в вашей матрице, вероятно, можно выделить таблицу для него каждая строка в таблице будет строка в вашем 2D-массиве. Выбор за вами, но да, вы не можете просто взять 2D-массив и сохранить его, он просто не входит в комплект поставки, который будет храниться в реляционной БД.

Надеется, что это помогает

+0

http://www.objectdb.com/java/jpa/entity/types#Multi_Value_Types_ Вы уверены? это заставляет меня думать, что 2D-массивы действительно могут быть сохранены. – b3bop

+0

Конечно, это можно сохранить, как сказал Марк Брамник ... как BLOB (используя @Blob). – DataNucleus

+0

, поэтому мне просто нужно аннотировать его с помощью @Lob? Или мне действительно нужно самому сериализовать его. Что делать, если я переношу массив 2d в сериализуемый класс? – b3bop