我正在使用Spring和Hibernate开发一个小型投注应用程序,除了一个,我从测试中获得了所有方法。我遇到的问题是我的应用程序中的管理员想要选择下注选项作为赢家或输家。创建投注选项时,在数据库中将其判断是否为赢家的属性设置为空。所以,我有一个方法在我的服务中选择这个选项作为赢家(真)或输家(假)。为了实现这一点,我将属性设置为布尔类型,因此它可以为null。
所以,这是我的选择(简化)类:
public function update(StoreProductRequest $requestOne, StoreProductBuildRequest $requestTwo)
{
// do something
}
我对MySQL数据库的映射是:
function calculate(){
//...
// "totaldrinks":
var totald = document.getElementById("total-drinks").innerHTML = drink1+drink2+drink3;
return totald;
}
function getSummary() {
var riceData = document.getElementById("ricingbowlfinal").getAttribute("value");
//...
var totalad = calculate()
document.getElementById("summarys").innerHTML = totalbill + totaldr + totalad;
}
这是我的服务实施:
public class TypeOption {
private Boolean isWinner;
public TypeOption(double odd, String result, BetType type) {
this.odd = odd;
this.result = result;
this.type = type;
}
public Boolean getIsWinner() {
return isWinner;
}
public void setIsWinner(Boolean isWinner) {
this.isWinner = isWinner;
}
}
最后,这是我的Dao实施:
CREATE TABLE TypeOption (
...
isWinner BIT,
...
);
我的测试方法:
public void changeOptionStatus(Long optionId, boolean status)
throws InstanceNotFoundException {
/* Find if the option exists, if not then throw an exception */
typeOptionDao.find(optionId);
typeOptionDao.changeOptionStatus(optionId, status);
}
当我从我的测试中调用服务中的方法来选择一个选项作为赢家或输家时,我总是得到一个NullPointerException,因此它不会在数据库上更新它,但SQL查询正在执行而没有错误。
这是堆栈跟踪:
public void changeOptionStatus(Long optionId, Boolean status) {
getSession().createQuery(
"UPDATE TypeOption t" +
" SET t.isWinner = :status" +
" WHERE t.optionId = :optionId").
setParameter("status", status).
setParameter("optionId", optionId).
executeUpdate();
}
知道这里有什么?我认为我以错误的方式或类似的方式映射了布尔类型。任何帮助将不胜感激。