Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Java программирование > Java Базы данных (JDBC, JPA, Hibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 05.04.2020, 23:23   #1
KenesK
Пользователь
 
Регистрация: 28.11.2013
Сообщений: 13
По умолчанию Не сохраняются ссылки на id

Есть 2 таблицы ts_message и ts_project. Первая хранит ссылку на вторую (project_id), в без вторичного ключа в бд. Есть значения из project (id) которые сохраняются в message (project_id) а есть которые проставляются как нулл, хотя они есть в project. Подскажите куда копать

ProjectEntity:
Код:
@Table(name = "ts_project")
public class ProjectEntity {

    @Id
    @GeneratedValue
    @Column(name = "id")
    private Long id;

    @NotBlank
    @Column(name = "code", nullable = false)
    private String code;

    @NotBlank
    @Column(name = "value_kz", nullable = false)
    private String valueKz;

    @NotBlank
    @Column(name = "value_ru", nullable = false)
    private String valueRu;

    @OneToMany(mappedBy = "projectEntity")
    @JsonBackReference
    private List<DashBoardEntity> dashBoardEntityList;

}
ProjectDto:
Код:
@Data
public class ProjectDto {

    private String code;
    private String valueKz;
    private String valueRu;
}
DashboardEntity:
Код:
@Table(name = "ts_message")
public class DashBoardEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @Column(name = "date", nullable = false)
    private Date date;

    @Column(name = "spent_hours", nullable = false)
    private Integer spentHours;

    @Column(name = "task_notation")
    private String taskNotation;

    @Column(name = "jira_sprint")
    private String jiraSprint;

    @Column(name = "jira_ticket")
    private String jiraTicket;

    @Column(name = "jira_planned_hours")
    private String jiraPlannedHours;

    @Column(name = "status")
    private boolean status;

    @ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
    @JoinColumn(name = "project_id")
    private ProjectEntity projectEntity;

    @ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
    @JoinColumn(name = "task_id")
    private TaskEntity taskEntity;

}
DashboardDto:
Код:
@Data
public class DashBoardDto {

    private Date date;
    private Integer spentHours;
    private Long taskId;
    private String taskNotation;
    private Boolean status;
    private Long projectId;
    private String jiraSprint;
    private String jiraTicket;
    private String jiraPlannedHours;

}
DashboardController:
Код:
@RequiredArgsConstructor
public class DashBoardController {

    private final ModelMapper modelMapper;
    private final DashBoardRepo dashBoardRepo;
    private final ProjectRepo projectRepo;
    private final TaskRepo taskRepo;

    @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
    public List<DashBoardDto> getAllDashBoard() {
        List<DashBoardEntity> dashBoardList = (List<DashBoardEntity>) dashBoardRepo.findAll();
        return dashBoardList.stream().map(this::toDto).collect(Collectors.toList());
    }

    @PostMapping(value = "/add", consumes = MediaType.APPLICATION_JSON_VALUE, produces =
            MediaType.APPLICATION_JSON_VALUE)
    public void createDashBoard(@RequestBody DashBoardDto dashBoardDto) {
        DashBoardEntity dashBoardEntity = toEntity(dashBoardDto);
        DashBoardEntity dashBoardEntity1 = dashBoardRepo.save(dashBoardEntity);
    }

    @GetMapping(value = "/{id}", produces =
            MediaType.APPLICATION_JSON_VALUE)
    public DashBoardDto getDashBoardById(@PathVariable(value = "id") Long id) {
        return toDto(dashBoardRepo.findById(id)
                .orElseThrow(() -> new ResourceNotFoundException("DashBoard", "id", id)));
    }

    @PostMapping(value = "/update/{id}", consumes = MediaType.APPLICATION_JSON_VALUE, produces =
            MediaType.APPLICATION_JSON_VALUE)
    public void updateDashBoard(@PathVariable(value = "id") Long id, @Valid @RequestBody DashBoardDto dashBoardDetail) {
        modelMapper.getConfiguration().setAmbiguityIgnored(true);
        DashBoardDto dashBoardDto = toDto(dashBoardRepo.findById(id)
                .orElseThrow(() -> new ResourceNotFoundException("DashBoard", "id", id)));
        dashBoardDto.setDate(dashBoardDetail.getDate());
        dashBoardDto.setTaskId(dashBoardDetail.getTaskId());
        dashBoardDto.setSpentHours(dashBoardDetail.getSpentHours());
        dashBoardDto.setTaskNotation(dashBoardDetail.getTaskNotation());
        dashBoardDto.setJiraSprint(dashBoardDetail.getJiraSprint());
        dashBoardDto.setJiraPlannedHours(dashBoardDetail.getJiraPlannedHours());
        dashBoardDto.setJiraTicket(dashBoardDetail.getJiraTicket());
        dashBoardDto.setStatus(dashBoardDetail.getStatus());
        dashBoardDto.setProjectId(dashBoardDetail.getProjectId());
        DashBoardEntity dashBoardEntity = toEntity(dashBoardDto);
        dashBoardEntity.setId(id);
        dashBoardRepo.save(dashBoardEntity);
    }

    @DeleteMapping(value = "/delete/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
    public void deleteDashBoard(@PathVariable(value = "id") Long id) {
        DashBoardDto dashBoardDto = toDto(dashBoardRepo.findById(id)
                .orElseThrow(() -> new ResourceNotFoundException("DashBoard", "id", id)));
        DashBoardEntity dashBoardEntity = toEntity(dashBoardDto);
        dashBoardEntity.setId(id);
        dashBoardRepo.delete(dashBoardEntity);
    }

    private DashBoardEntity toEntity(DashBoardDto dashBoardDto) {
            modelMapper.getConfiguration().setAmbiguityIgnored(true);
            DashBoardEntity dashBoardEntity = modelMapper.map(dashBoardDto, DashBoardEntity.class);

            Optional <ProjectEntity> optionalProjectEntity = projectRepo.findById(dashBoardDto.getProjectId());
            ProjectEntity projectEntity = optionalProjectEntity.isPresent() ? optionalProjectEntity.get() : null;
            dashBoardEntity.setProjectEntity(projectEntity);

            Optional <TaskEntity> optionalTaskEntity = taskRepo.findById(dashBoardDto.getTaskId());
            TaskEntity taskEntity = optionalTaskEntity.isPresent() ? optionalTaskEntity.get() : null;
            dashBoardEntity.setTaskEntity(taskEntity);

            return dashBoardEntity;
    }

    private DashBoardDto toDto(DashBoardEntity dashBoardEntity) {
        return modelMapper.map(dashBoardEntity, DashBoardDto.class);
    }

}
KenesK вне форума Ответить с цитированием
Старый 14.04.2020, 14:13   #2
lyro41
Новичок
Подтвердите свой е-майл
 
Регистрация: 14.04.2020
Сообщений: 2
По умолчанию

в гугле посмотри или напиши мне в лс ,помогу. ��
lyro41 вне форума Ответить с цитированием
Старый 14.04.2020, 15:35   #3
lyro41
Новичок
Подтвердите свой е-майл
 
Регистрация: 14.04.2020
Сообщений: 2
По умолчанию

lyro41 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не сохраняются настройки TCP/IP Ти6ка Windows 1 25.07.2017 12:05
Не сохраняются данные в БД maksikus PHP 22 17.12.2014 16:41
изменения не сохраняются aleksskay БД в Delphi 10 17.11.2014 22:07
Данные не сохраняются Анастас Помощь студентам 4 26.10.2011 16:17
Не сохраняются записи в БД Siluet БД в Delphi 14 01.11.2010 21:54


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840