Размер приращения последовательности установлен на [50] в сопоставлении объектов, тогда как размер приращения связанной JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Размер приращения последовательности установлен на [50] в сопоставлении объектов, тогда как размер приращения связанной

Сообщение Anonymous »

Я слежу за выпуском Learn Spring 5 и т. д. на udemy и сейчас занимаюсь тестированием нашего приложения. До сих пор все работало нормально, я смог подключиться к базе данных PostgreSQL и все такое, но теперь я застрял в этом тесте, который провалился уже 2 дня.

Я не понять, что является причиной провала теста. Приложение запускается, но тест нет. Вот тестовый класс:

package com.ghevi.dao;

import com.ghevi.pma.ProjectManagementApplication;
import com.ghevi.pma.dao.ProjectRepository;
import com.ghevi.pma.entities.Project;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.SqlGroup;
import org.springframework.test.context.junit4.SpringRunner;

import static org.junit.Assert.assertEquals;

@ContextConfiguration(classes= ProjectManagementApplication.class)
@RunWith(SpringRunner.class)
@DataJpaTest // for temporary databases like h2
@SqlGroup({
@Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = {"classpath:schema.sql", "classpath:data.sql"}),
@Sql(executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, scripts = "classpath:drop.sql")
})
public class ProjectRepositoryIntegrationTest {

@Autowired
ProjectRepository proRepo;

@Test
public void ifNewProjectSaved_thenSuccess(){
Project newProject = new Project("New Test Project", "COMPLETE", "Test description");
proRepo.save(newProject);

assertEquals(5, proRepo.findAll().size());
}

}


А это трассировка стека:

https://pastebin.com/WcjNU76p

Класс сотрудников (не обращайте внимания на комментарии, они, вероятно, мусор):

package com.ghevi.pma.entities;

import javax.persistence.*;
import java.util.List;

@Entity
public class Employee {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "employee_seq") // AUTO for data insertion in the class projmanagapplication (the commented out part), IDENTITY let hibernate use the database id counter.
private long employeeId; // The downside of IDENTITY is that if we batch a lot of employees or projects it will be much slower to update them, we use SEQUENCE now that we have schema.sql (spring does batch update)

private String firstName;
private String lastName;
private String email;

// @ManyToOne many employees can be assigned to one project
// Cascade, the query done on projects it's also done on children entities
@ManyToMany(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.PERSIST}, // Standard in the industry, dont use the REMOVE (if delete project delete also children) or ALL (because include REMOVE)
fetch = FetchType.LAZY) // LAZY is industry standard it loads project into memory, EAGER load also associated entities so it slows the app, so we use LAZY and call child entities later
//@JoinColumn(name="project_id") // Foreign key, creates a new table on Employee database
@JoinTable(name = "project_employee", // Merge the two table using two foreign keys
joinColumns = @JoinColumn(name="employee_id"),
inverseJoinColumns = @JoinColumn(name="project_id"))

private List projects;

public Employee(){

}

public Employee(String firstName, String lastName, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}

public List getProjects() {
return projects;
}

public void setProjects(List projects) {
this.projects = projects;
}

/* Replaced with List
public Project getProject() {
return project;
}

public void setProject(Project project) {
this.project = project;
}
*/

public long getEmployeeId() {
return employeeId;
}

public void setEmployeeId(long employeeId) {
this.employeeId = employeeId;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}
}


Кроме того, это файл Schema.sql, где я ссылаюсь на эти последовательности, поскольку этот файл запускается тестом, я только что заметил, что IntelliJ отмечает некоторые ошибки в этом файле. Например, он помечает красным некоторые пробелы и букву T в TABLE, говоря:

expected one of the following: EDITIONING FORCE FUNCTION NO OR PACKAGE PROCEDURE SEQUENCE TRIGGER TYPE VIEW identifier


CREATE SEQUENCE IF NOT EXISTS employee_seq;

CREATE TABLE IF NOT EXISTS employee ( ) TABLE IF NOT EXISTS project (

project_id BIGINT NOT NULL DEFAULT nextval('project_seq') PRIMARY KEY,
name VARCHAR(100) NOT NULL,
stage VARCHAR(100) NOT NULL,
description VARCHAR(500) NOT NULL

);

CREATE TABLE IF NOT EXISTS project_employee (

Подробнее здесь: https://stackoverflow.com/questions/606 ... g-while-th
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»