Hibernate: вставить список <String>в базу данных после вызова другого метода и преобразования его в строку: сохранить весь список в одной ячейке - PullRequest
0 голосов
/ 25 января 2020

Предположим, у меня есть этот класс, который я пытаюсь вставить в базу данных PostgreSQL, используя Hibernate:

@Entity
@Table(name = "users")
public class User  {
  private String name;
  private String email;

  private List<String> pets = new ArrayList<>();  //pets get added later

  //getters, setters, adders
}

В другом файле:

public class Utils  {
  public static String listToString(List<?> list, String separator)  {
        String result = "";

        for (Object e: list)  {
            result += e.toString() + separator;
        }

        return result == "" ? result : result.substring(0, result.lastIndexOf(separator));
    }
}

Я хочу пользователя быть сопоставленным с таблицей name email pets, где домашние животные имеют значение Utils.listToString(user.getPets()). Можно ли достичь с помощью Hibernate?

EDIT :

Я внес эти изменения в код

private List<String> pets= new CustomArrayList();
public class CustomArrayList extends ArrayList<String> implements List<String> {
   @Override
   public String toString()  {
       return Utils.listToString(this, "\n");
    }
}

При использовании CustomArrayList облегчает достижение, как заставить Hibernate вызывать toString при сохранении в дБ?

EDIT :

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

1 Ответ

0 голосов
/ 25 января 2020

Использовать аннотацию @OneToMany Один-ко-многим . Затем продолжите вызов сохранения.

...