1 / 1 / 0
Регистрация: 02.12.2019
Сообщений: 62
1

One to many связь содержит null поле hibernate

24.12.2022, 23:10. Показов 988. Ответов 0

Author24 — интернет-сервис помощи студентам
Я пытаюсь написать приложения, используя микросервисную архитектуру. Сейчас я делаю сервис загрузки фотографий и наткнулся на небольшую проблему. Я создал сущности, которые соединены между собой one to many связью. Однако список, который хранится в родительском классе всегда null, то есть он просто не инициализируется как список. В чём может быть проблема? Если кто-то знает, пожалуйста сообщите, я буду очень благодарен.

GroupEntity.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Entity
@Table(name = "groups", schema = "working_schema")
@Getter @Setter
public class GroupEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private long id;
    private long userId;
    private String description;
    private LocalDateTime creationDate;
 
    @OneToMany(mappedBy = "photoGroup", cascade = CascadeType.ALL)
    private List<PhotoEntity> photos;
}
PhotoEntity.java
Java
1
2
3
4
5
6
7
8
9
10
11
@Entity
@Table(name = "photos", schema = "working_schema")
@Getter @Setter
public class PhotoEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private long id;
    @ManyToOne
    @JoinColumn(name = "group_id")
    private GroupEntity photoGroup;
}

HibernateUtil.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class HibernateUtil {
    private static SessionFactory sessionFactory;
 
    public static SessionFactory getSessionFactory() {
        if(sessionFactory == null) {
            sessionFactory = buildSessionFactory();
        }
        return sessionFactory;
    }
 
    private static SessionFactory buildSessionFactory() {
        PostgresConfigDTO postgresData = getPostgresData();
        Configuration configuration = getDatabaseConfiguration(postgresData);
        StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
        return configuration.buildSessionFactory(builder.build());
    }
 
    private static Configuration getDatabaseConfiguration(PostgresConfigDTO postgresData) {
        Configuration configuration = new Configuration();
        configuration.addAnnotatedClass(PhotoEntity.class);
        configuration.addAnnotatedClass(GroupEntity.class);
        configuration.setProperty("connection.driver_class","org.postgresql.Driver");
        configuration.setProperty("hibernate.connection.url", postgresData.getConnectionURL());
        configuration.setProperty("hibernate.connection.username", postgresData.getUsername());
        configuration.setProperty("hibernate.connection.password", postgresData.getPassword());
        configuration.setProperty("dialect", "org.hibernate.dialect.PostgreSQL9Dialect");
        configuration.setProperty("hibernate.hbm2ddl.auto", "update");
        configuration.setProperty("show_sql", "true");
        configuration.setProperty(" hibernate.connection.pool_size", "10");
        return configuration;
    }
 
    private static PostgresConfigDTO getPostgresData() {
        PostgresConfigDTO postgresUserData = new PostgresConfigDTO();
        if(System.getenv(PostgresData.USERNAME_ENV_VARIABLE_NAME) == null) {
            postgresUserData.setUsername(PostgresData.USERNAME);
        }
        if(System.getenv(PostgresData.PASSWORD_ENV_VARIABLE_NAME) == null) {
            postgresUserData.setPassword(PostgresData.PASSWORD);
        }
        if(postgresUserData.getConnectionURL() == null) {
            postgresUserData.setConnectionURL(PostgresData.DATABASE_URL);
        }
        return postgresUserData;
    }
}
V1_1__CREATE_TABLES.sql
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE groups(
    id BIGINT NOT NULL,
    userid BIGINT NOT NULL,
    description VARCHAR(1000),
    creationDate TIMESTAMP NOT NULL,
    PRIMARY KEY (id)
);
 
CREATE TABLE photos(
    id BIGINT NOT NULL,
    group_id BIGINT NOT NULL,
    CONSTRAINT photoGroup FOREIGN KEY (group_id) REFERENCES groups(id),
    PRIMARY KEY (id)
);
Это мой код, где я пытаюсь добавить объект PhotoEntity в объект GroupEntity

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public GroupEntity addPhoto(PhotoUploadServiceOuterClass.GroupAddRequest photos) throws IOException {
        GroupEntity group = addGroup(photos.getDescription());
        for(var photoFile: photos.getFilesList()) {
            createPhoto(group, photoFile.toByteArray());
        }
        return group;
    }
 
    private GroupEntity addGroup(String description) {
        GroupEntity group = new GroupEntity();
        group.setDescription(description);
        group.setCreationDate(LocalDateTime.now());
        group.setUserId(3);
        groupRepo.saveGroup(group);
        return group;
    }
 
    private void createPhoto(GroupEntity group, byte[] files) throws IOException {
        PhotoEntity photo = new PhotoEntity();
        group.getPhotos().add(photo);
        photoRepo.savePhoto(photo);
        uploadPhoto(photo, files);
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2022, 23:10
Ответы с готовыми решениями:

Нужно проверить содержит ли поля со значением null или 0, если содержит то выбросить исключение RuntimeException?
Нужно проверить содержит ли поля со значением null или 0, если содержит то выбросить исключение...

Hibernate: LazyInitializationException заменить на null поля / etc
У меня в проекте используеться hibernate, а в нём как известно есть возможность подтягивать...

[Hibernate] Удалить сущность с null constraint
БД выглядит следующим образом(без roles и user_roles): В users_playlists композитный PK. Хочу...

связь один-ко-многим в hibernate
Здравствуйте! Я знаю, что связь один-ко-многим в hibernate реализуется через join column или через...

Связь класса и конфига в Hibernate
@Entity @Table(name = &quot;kek&quot;) public class Lol { @Id @GeneratedValue (strategy =...

0
24.12.2022, 23:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2022, 23:10
Помогаю со студенческими работами здесь

Jquery-ajax и hibernate возвращает null хотя данные в базе есть
не выводятся данные из базы.думал это из-за скорости ajax запроса.т.е он выполняется быстрее чем...

Hibernate и аннотации - связь таблицы саму к себе
День добрый. Помогите разобраться и составить корректную модель таблицы для Hibernate. ...

Hibernate - связь один ко многим (аннотация) - ошибка
При попытке реализовать классическое для обучения приложение с подключением к Локальной БД H2 (с...

Тип объект содержит поле: динамическое поле - одномерный массив
Тип объект содержит поле: динамическое поле - одномерный массив, количество значений. Методи:...

Почему ссылка содержит null?
Есть класс : public class Comment { public int Id { get; set; } public...

Вывести 1 если другое поле не null, 0 если null
Всем доброго времени суток. Никак не могу найти ответ на вопрос в теме. Грубо говоря нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru