在我的应用程序中编写使用的方法时playframework
,我需要获取用户输入的Address
字段并在 db 中搜索匹配的地址。如果找不到匹配的地址,我必须创建一个新地址。
这里只有addressLine1
和country
是必填字段。用户可以忽略 addressLine2。
在从 html 表单中获取输入时,可选字段的文本字段返回一个空字符串。所以,为了测试地址的创建,我决定创建一个Map<String,String>
传递给该POST
方法。我试过了
addrparams = new Map<String,String>();
addrparams.put("addressline1","clayton st");
addrparams.put("country","US");
当 jpql 查询尝试为缺少的选项字段绑定映射值时,这会导致空指针异常。
String query="select distinct a from Address a where a.addressLine1=:addressline1 and a.addressLine2=:addressline2 and a.country=:country";
Address address = Address.find(query).bind("addressline1",addressline1).bind("addressline2",addressline2).bind("country", country).first();
..
我通过为所有可选字段放置空字符串来解决这个问题
addrparams = new Map<String,String>();
addrparams.put("addressline1","clayton st");
addrparams.put("addressline2","");
addrparams.put("country","US");
我希望这是正确的方法。如果有人能指出更好的方法来测试这种情况,那将对我有很大帮助
地址类
@Entity
public class Address extends Model {
@Required
String addressLine1;
String addressLine2;
@Required
String country;
...
}
更新: 堆栈跟踪在这里
发生nullptr异常的Account.java:207,是这一行
Address address = Address.find(query).bind("addressline1",addressline1).bind("addressline2",addressline2).bind("country", country).first();