Неизвестный столбец в «списке полей» с использованием класса @Embedded - PullRequest
1 голос
/ 30 марта 2019

У меня проблема с Spring JPA.

Это мой домен:

@Entity
public class Courier {

    @Id
    private int id;

    @Enumerated(EnumType.STRING)
    private VehicleType vehicle;

    @Enumerated(EnumType.STRING)
    private Status status;

    @Embedded
    private Location location;

    public Courier(int id, Location location, VehicleType vehicle, Status status) {
        this.id = id;
        this.location = location;
        this.vehicle = vehicle;
        this.status = status;
     }

А это мой встроенный класс:

@Embeddable
public class Location {

    private double coorx;
    private double coory;

    public Location(double coorx, double coory) {
        this.coorx = coorx;
        this.coory = coory;
    }

Вот так я настроил свой schema.sql для тестовой среды:

DROP TABLE courier
DROP TABLE vehicle

CREATE TABLE courier (
    id INT PRIMARY KEY,
    vehicle VARCHAR(100),
    status VARCHAR(100),
    coorx DOUBLE,
    coory DOUBLE
);

CREATE TABLE vehicle (
    id VARCHAR(100) PRIMARY KEY,
    weight_limit BIGINT,
    distance_limit BIGINT
);

INSERT INTO courier VALUES (1, 1, 1, 'CAR', 'IDLE');
INSERT INTO courier VALUES (2, 13, 34, 'MOTORCYCLE', 'DELIVERING');

INSERT INTO vehicle VALUES ('BIKE', 15, 5);
INSERT INTO vehicle VALUES ('MOTORCYCLE', 30, 10);
INSERT INTO vehicle VALUES ('CAR', 100, 0);
INSERT INTO vehicle VALUES ('TRUCK', 0, 0);

Это мой тест (я знаю, что он ничего не делает, он только для удара по HSQLDB):

@RunWith(SpringRunner.class)
@SpringBootTest
public class WebserverApplicationTests {

    @Autowired
    CourierService courierService;

    @Test
    public void test(){
        List<Courier> couriers = courierService.findAll();
    }
}

Когда я выполняю это, он выдает следующее:

2019-03-29 20:12:00.969  INFO 87347 --- [main] o.h.h.i.QueryTranslatorFactoryInitiator  : HHH000397: Using ASTQueryTranslatorFactory Hibernate: select courier0_.id as id1_0_, courier0_.coorx as coorx2_0_, courier0_.coory as coory3_0_, courier0_.status as status4_0_, courier0_.vehicle as vehicle5_0_ from courier courier0_
2019-03-29 20:12:01.207  WARN 87347 --- [main] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 1054, SQLState: 42S22
2019-03-29 20:12:01.207 ERROR 87347 --- [main] o.h.engine.jdbc.spi.SqlExceptionHelper   : Unknown column 'courier0_.coorx' in 'field list'

Он не распознает колонну Coorx. Я провел много исследований, и я не понял, что я делаю неправильно.

Курьерская служба звонит courierRepository.findAll(). CourierRepository расширяется JpaRepository<Courier, Integer>.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...