2015-12-09 4 views
2

Я пытаюсь добавить arraylist двойных значений в мою базу данных mysql, используя JPA и Hibernate, но он не сохраняет значения как удваивает, он хранит объект arraylist, а затем много персонажи.Хранение arraylist в базе данных mysql с использованием JPA

Образ ниже, как выглядит база данных.

Arraylist

Вот мой код:

Playlist.java

@Entity 
public class Playlist { 

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
private int id; 

private String name, persistentId; 
private double playlistId; 
@ElementCollection 
@CollectionTable(name ="tracks") 
private ArrayList<Double> tracks = new ArrayList<Double>(); 

@OneToMany(mappedBy="playlist") 
Set<Song> songs; 

public Playlist(String name, String persistentId, double playlistId, ArrayList<Double> tracks) { 
    this.name = name; 
    this.persistentId = persistentId; 
    this.playlistId = playlistId; 
    this.tracks = tracks; 
} 

public Playlist() { 
} 

Main.java

Playlist p = new Playlist(); 
ArrayList<Double> tracks = new ArrayList<Double>(); 
     for (int j = 0; j < tList.getLength(); ++j) { 
      Element track = (Element) tList.item(j); 

      Double trackId = (Double) x.evaluate("key[.='Track ID']/following-sibling::integer[1]", track, 
        XPathConstants.NUMBER); 
      tracks.add(trackId); 
      p.setTracks(tracks); 

     } 

Может кто-нибудь сказать мне, что я делаю неправильно, пожалуйста?

+0

ваше «изображение» - это куча дерьма; как вы думаете, что кто-нибудь поможет? –

+0

@NeilStockton Я хотел показать это, потому что это не должно выглядеть так. Он должен показывать числовые значения. – ariella123

+0

Почему бы не начать с предоставления ОПРЕДЕЛЕНИЯ DDL для таблиц в хранилище данных, а не в этом? поэтому вы видите, что он правильно отобразил БД. Если он создал BLOB для этого столбца, то Hibernate сначала ошибается, поэтому сосредоточьтесь на своем сопоставлении, а не на коде сохранения. Также укажите, какой тип «ArrayList» ... java.util? затем просмотрите журнал вашей реализации JPA, чтобы узнать, почему он сопоставляет его с BLOB (неправильно) –

ответ

0

Отображается конкретная реализация интерфейса List. Hibernate использует свою собственную реализацию, поэтому я предполагаю, что она отбрасывается этим. Довольно странно, что он не подведет жесткий, хотя ..

Попробуйте изменить его:

@ElementCollection 
@CollectionTable(name ="tracks") 
private List<Double> tracks = new ArrayList<>(); 

(new ArrayList<>() часть просто за то, что нуль-безопасно ..)

+0

Нет. Я получаю сообщение об ошибке «Не удается найти org.hibernate.search.event.FullTextIndexEventListener в пути к классам. Поиск в спящем режиме не включен ». когда я меняю это. – ariella123

+0

Каковы типы столбцов базы данных в таблице 'tracks'? – Tobb

+0

JPA создает столбец как tinyblob, но я должен изменить его на longblob, чтобы хранить нужные мне данные. – ariella123

0

Пытаться установить Дополнительная информация:

@ElementCollection 
@CollectionTable(name ="tracks" , [email protected](name="playlist_id")) 
@Column(name="track") 
private List<Double> tracks = new ArrayList<>(); 
+0

Нет, к сожалению, это говорит то же самое, что и приведенный выше комментарий «1183 [main] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Не удается найти org.hibernate.search.event.FullTextIndexEventListener в пути к классам. Поиск в спящем режиме не включен. « ... »Не удалось определить Тип для: java.util.List, за столом: Плейлист, для столбцов: [org.hibernate.mapping.Column (track)] " – ariella123

+0

Не могли бы вы вывести код из списка Playlist.java. –

+0

Я отредактировал его сейчас. – ariella123

Смежные вопросы