为什么在启动服务器时spring会清空我的数据库表?

时间:2018-03-03 19:28:54

标签: java spring spring-data spring-data-jpa

我有一个包含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 先感谢您!

2 个答案:

答案 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重置。