我收到一个错误,说
`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));
}
然而,我能够delete
和get
只是不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创建此序列并添加了新行可能会有所帮助