fis*_*kra 4 java spring h2 spring-data-jpa
JpaRepository findAll()方法返回空结果。我正在尝试通过使用Spring-boot,h2数据库和jpa来实现rest服务。
这是我的 schema.sql
CREATE TABLE IF NOT EXISTS `City` (
`city_id` bigint(20) NOT NULL auto_increment,
`city_name` varchar(200) NOT NULL,
PRIMARY KEY (`city_id`));
Run Code Online (Sandbox Code Playgroud)
我的data.sql文件包括:
INSERT INTO City (city_id,city_name) VALUES(1,'EDE');
INSERT INTO City (city_id,city_name) VALUES(2,'DRUTEN');
INSERT INTO City (city_id,city_name) VALUES(3,'DELFT');
Run Code Online (Sandbox Code Playgroud)
该City实体:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "City")
public class City {
@Id
@GeneratedValue
@Column(name = "city_id")
private Long cityId;
@Column(name = "city_name")
private String cityName;
public Long getCityId() {
return cityId;
}
public void setCityId(Long cityId) {
this.cityId = cityId;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
}
Run Code Online (Sandbox Code Playgroud)
该JpaRepository接口:
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface CityRepository extends JpaRepository<City, Long> {
@Override
List<City> findAll();
}
Run Code Online (Sandbox Code Playgroud)
这是我的Contoller课
@RestController
@RequestMapping("/city")
public class CityController {
@Autowired
private CityRepository cityRepository;
@RequestMapping(method = RequestMethod.GET, value = "/all")
public List<City> getAllCityList(){
return cityRepository.findAll();
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?参考文档:Spring doc
您有一个schema.sql和data.sql,它们DataSource都已在配置好并准备好后执行。接下来EntityManagerFactory创建,默认情况下(请参阅参考指南),这将为create-drop嵌入式类型(如H2)提供数据库。
您可以通过将该spring.jpa.hibernate.ddl-auto属性更改为create或之后的其他任何行为来覆盖此行为create-drop。
另一个解决方案是将您的名称重命名data.sql为import.sqlHibernate为您创建架构后将执行的名称。现在,您显然也可以删除,schema.sql因为Hibernate将创建架构。
如果这是出于学习目的,那么应该没问题,如果您想在实时生产系统中使用它,我建议不要使用它来使用Flyway之类的东西来管理您的模式。
| 归档时间: |
|
| 查看次数: |
11169 次 |
| 最近记录: |