0
我有一个PostgreSQL的功能update_renovation:的Java/PostgreSQL- CallableStatement.setBoolean空,抛出NPE
CREATE OR REPLACE FUNCTION update_renovation(
p_county character varying,
p_municipality character varying,
p_district character varying,
p_neighbourhood character varying,
p_street character varying,
p_number character varying,
p_reported_by character varying,
p_is_renovated boolean) //<-- NOTE THIS boolean
RETURNS void AS
$BODY$
....
现在我调用这个函数从Java,像这样
CallableStatement statement = con.prepareCall(" { call update_renovation(?, ?, ?, ?, ?, ?, ?, ?) } ");
statement.setString(1, request.getAdr().getCounty());
statement.setString(2, request.getAdr().getMunicipality());
statement.setString(3, request.getAdr().getDistrict());
statement.setString(4, request.getAdr().getNeighbourhood());
statement.setString(5, request.getAdr().getStreet());
statement.setString(6, request.getAdr().getNumber());
statement.setString(7, request.getClientID());
statement.setBoolean(8, request.isRenovated()); //<-- NOTE THIS boolean
statement.execute();
statement.close();
request.isRenovated()可能在某次为空(它返回布尔型不是布尔型)。
当发生这种情况时,java在指定的行上抛出NPE。
我阅读了关于setBoolean的文档,它接受可能是NPE原因的布尔值(不是布尔值)。
由于Postgre接受NULL值为布尔值我的问题是我如何将它设置为空的Java服务器端?
谢谢!
request.isRenovated()返回什么? “布尔”还是“布尔”? – bradimus
请阅读这个问题 - “request.isRenovated()可能有些时候是空的(它返回布尔值而不是布尔值)。”仍然感谢提问 – KasparTr