我有以下界面:
public interface SingleRecordInterface<T> {
public void insert(T object);
}
Run Code Online (Sandbox Code Playgroud)
我有下面的抽象类(没有提到方法插入):
public abstract class AbstractEntry implements SingleRecordInterface<AbstractEntryBean> {
}
Run Code Online (Sandbox Code Playgroud)
我有具体的课程:
public class SpecificEntry extends AbstractEntry {
public void insert(SpecificEntryBean entry) {
// stuff
}
}
Run Code Online (Sandbox Code Playgroud)
最后,SpecificEntryBean定义为:
public class SpecificEntryBean extends AbstractEntryBean {
}
Run Code Online (Sandbox Code Playgroud)
我有以下错误:
SpecificEntry类型必须实现继承的抽象方法SingleRecordInterface.insert(AbstractEntryBean)
鉴于SpecificEntryBean扩展了AbstractEntryBean,我不明白这个错误的原因.我该如何解决这个错误?
我认为使用某种顺序才有意义.我想要做的是ORDER BY在视图中包含该子句,以便该视图上的所有SELECTs都可以省略它.但是,我担心订购可能不一定会延续到SELECT,因为它没有指定订单.
是否存在视图指定的排序不会反映在该视图上的选择结果中的情况(视图中的order by子句除外)?
我想获取一个n维度数组和包含n-1维数组行的返回集.例如,获取数组ARRAY[[1,2,3], [4,5,6], [7,8,9]]并返回一个集合{1,2,3}, {4,5,6}, {7,8,9}.使用unnest返回集合1,2,3,4,5,6,7,8,9.
我尝试从PostgreSQL 8.4中获取不需要的函数,这似乎就像我正在寻找的那样:
CREATE OR REPLACE FUNCTION tstng.unnest2(anyarray)
RETURNS SETOF anyelement
LANGUAGE plpgsql
IMMUTABLE
AS $$
BEGIN
RETURN QUERY SELECT $1[i]
FROM generate_series(array_lower($1,1), array_upper($1,1)) i;
END;
$$;
Run Code Online (Sandbox Code Playgroud)
但是,SELECT tstng.unnest2(ARRAY[[1,2,3], [4,5,6], [7,8,9]]);返回集合, ,(即:3个空行).
我还发现SELECT (ARRAY[[1,2,3], [4,5,6], [7,8,9]])[0];返回null,我认为这是我问题的根源.
我想执行一个动态SQL语句,其返回值是IF语句的条件:
IF EXECUTE 'EXISTS (SELECT 1 FROM mytable)' THEN
Run Code Online (Sandbox Code Playgroud)
这会产生错误ERROR: type "execute" does not exist.
是否可以这样做,或者是否有必要在IF语句之前执行SQL变量,然后将变量检查为条件?
类A具有内部类B.类A具有通过getBs,addB和removeB方法提供的B类对象的私有列表.如何对removeB方法进行单元测试?
我希望创建两个相同的B类模拟,添加每个,然后删除其中一个两次(结果是删除它们).但是,我已经通过失败了解到不会在模拟对象上调用equals方法.
尝试将外部类与其内部类隔离以进行单元测试是愚蠢的(或不可能的)吗?
示例代码如下
要测试的类:
import java.util.ArrayList;
import java.util.List;
public class Example {
private List<Inner> inners = new ArrayList<Inner>();
public List<Inner> getInners() {
return inners;
}
public void addInner(Inner i) {
inners.add(i);
}
public void removeInner(Inner i) {
inners.remove(i);
}
/**
* equalityField represents all fields that are used for testing equality
*/
public class Inner {
private int equalityField;
private int otherFields;
public int getEqualityField() {
return equalityField;
}
public Inner(int field) {
this.equalityField = field;
}
@Override
public …Run Code Online (Sandbox Code Playgroud) postgresql ×3
java ×2
plpgsql ×2
arrays ×1
dynamic-sql ×1
easymock ×1
inheritance ×1
interface ×1
junit ×1
select ×1
sql ×1
unit-testing ×1