У меня проблема с 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>
.
Есть идеи?