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

问题描述 投票:1回答:2

我有一个包含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
}

UserServiceImpl

@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。 先感谢您!

java spring spring-data spring-data-jpa
2个回答
2
投票

你能检查一下hibernate属性文件中字段“hibernate.hbm2ddl.auto”的替换值是什么。

如果hibernate.hbm2ddl.auto =“create”或“create-drop”将导致在服务器重启期间删除数据。


0
投票

hibernate.hbm2ddl.auto =“create”或“create-drop”强制db重置。

© www.soinside.com 2019 - 2024. All rights reserved.