我有一个包含96个预定义数据行的数据库表roles
,但是当我启动服务器(在Tomcat 8.5.28上运行)时,它会清空该表。我想知道为什么会这样做?
RoleController
@RestController
public class RoleController {
private final Logger logger = LoggerFactory.getLogger(RoleController.class);
final RoleServiceImpl roleService;
@Autowired
public RoleController(RoleServiceImpl roleService) {
this.roleService = roleService;
}
@RequestMapping(method = RequestMethod.GET)
public Iterable<Role> getAllRolesByName() {
return roleService.list();
}
}
角色(模型/实体)
@Entity
@Table(name = "roles")
public class Role {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "name")
private String name;
// region: constructors
public Role() {
}
public Role(String name) {
this.name = name;
}
// endregion: constructors
// region: getters & setters
public int getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// endregion: getters & setters
// region: methods
// endregion: methods
}
RoleServiceImpl
@Service
public class RoleServiceImpl implements RoleService {
private final RoleRepository roleRepository;
@Autowired
public RoleServiceImpl(RoleRepository roleRepository) {
this.roleRepository = roleRepository;
}
public Iterable<Role> list() {
return roleRepository.findAll();
}
}
RoleService
public interface RoleService {
}
RoleRepository
public interface RoleRepository extends CrudRepository<Role, Integer> {
}
每次启动服务器时,我都可以加载预定义的96个数据行,但我想知道这是否正常。 (即如果这台服务器是现场的,我不得不将其关闭以进行维护或类似的事情,那么它会清空表格中的所有数据吗?我觉得有点奇怪。)
---额外的笔记---
我使用的是Postgres和Hibernate。我的配置是100%Java
先感谢您!
答案 0 :(得分:2)
你能检查替换字段的值是什么&#34; hibernate.hbm2ddl.auto &#34;在hibernate属性文件中。
如果hibernate.hbm2ddl.auto = &#34;创建&#34;或&#34; create-drop&#34; ,这会导致在服务器重启期间删除数据。
答案 1 :(得分:0)
hibernate.hbm2ddl.auto =“create”或“create-drop”强制db重置。