使用Playframework和bean更新单个MYSQL表记录时出现Nullpointer异常

时间:2015-05-21 05:37:28

标签: mysql playframework ebean

我是playframework的新手。我使用createSQLUpdate语句更新了记录。我希望使用Ebean内置的保存方法来实现相同的目的。

当我在下面的代码中执行在bar1.setplace中获取[NullPointerException:null]时。

public static Result updateBarbean() {
            Bar bar = Form.form(Bar.class).bindFromRequest().get();
            Bar bar1 = Ebean.find(Bar.class,bar.name);
            bar1.setPlace(bar.place);
            Ebean.save(bar);
            return ok(bar.name);
            }

Index.scala.html

<h2><font color= "red">  Using bean update a record </font></h1>

<form action="@routes.Application.updateBarbean()" method="POST">
    <label for="name"> Enter Your name</label>  <input  name="name"/> <br>
    <label for="place"> Enter Your place</label>  <input name="place"/> <br>
    <input type="submit"/>
</form>

1 个答案:

答案 0 :(得分:0)

最简单的方法是调试play应用程序并查看bar.place抛出NPE的原因。但是这里也有一些可能有用的可能性。

第一种可能性:尝试使用getter:

bar1.setPlace(bar.getPlace());

在Bar.java中你也需要getter。

public whatEver getPlace() {
    return place;
}

第二种可能性:你说你想要更新一行,对吧?所以我认为你的代码应该是这样的:

public static Result updateBarbean() {
        Bar bar = Form.form(Bar.class).bindFromRequest().get();
        Bar bar1 = Ebean.find(Bar.class,bar.name);
        bar1.setPlace(bar.place);
        Ebean.update(bar1);
        return ok(bar.name);
        }

您的代码可能是正确的,但我认为您想要的是使用标识符&#34; name&#34;更新Bar对象。因此,您从表单中获取bar,从表中获取bar1。因此,您将新位置设置为bar1并想要更新它。重要的是要知道,如果您使用update(),则只能更新一行,因为如果您想要编写新的save(),则只能使用{{1}}。如果我误解了任何事情,请告诉我;)