序列不存在,休眠和 JPA 2.1



我收到一个错误,说

`Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause
java.sql.SQLSyntaxErrorException: ORA-02289: sequence does not exist`

当我尝试创建用户时,会发生此错误。

  @RequestMapping(method = POST)
    public UserDto createUser(@RequestBody userDto user) {
        Preconditions.checkNotNull(user);
        return Preconditions.checkNotNull(service.create(user));
    }

然而,我能够deleteget只是不create也不update。同样令人沮丧的是,我在尝试update时没有出错,只是没有。

我没有得到任何关于在哪里寻找的真正线索。我已经尝试了许多不同的方法来解决这个问题,但无济于事。

我找到了一个帖子,上面有这个:

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQUENCE1")
@SequenceGenerator(name="SEQUENCE1", sequenceName="SEQUENCE1", allocationSize=1)
private int user_id;

在此链接: SOF 链接

它抱怨我用 netbeans 生成的这个实体,我目前正在使用 Intellij。任何建议将不胜感激。

创建新Campaign实体的代码似乎不正确。

public CampaignDto create(CampaignDto campaignDto) {
    Campaign campaign = mapper.mapReverse(campaignDto);
    System.out.println(campaign.toString());
    // Following 2 lines must be added to obtain and use managed Shop entity
    Shop existingShop = shopRepository.findOne(campaignDto.getShopId());
    campaign.setShop(existingShop);
    campaign = campaignRepository.save(campaign);
    CampaignDto createdCampaign = mapper.map(campaign);
    return createdCampaign;
}

看起来您在创建新Campaign时可能没有设置Campaign.shopId字段。

@JoinColumn(name = "SHOP_ID", referencedColumnName = "SHOP_ID")
@ManyToOne(optional = false)
private Shop shopId;

您可能希望将此字段重命名为仅shop以明确它包含的内容,因为它不仅仅是一个标识符。

根据您持久化新对象的方式,您可能需要在@ManyToOne上添加CascadeType.ALL,以确保新Shop与新Campaign一起持久化。

@ManyToOne(optional = false, cascade = CascadeType.ALL)

转到应用程序属性文件并放置hibernate.hbm2ddl.auto=true;Hibernate创建此序列并添加了新行可能会有所帮助

最新更新