我有一个使用 hibernate 的 Java 数据库应用程序,其中不同的类具有相同的属性(此处:“active”)。在接口中,有一个函数可以根据这样的属性(活动)从数据库中检索条目。到目前为止,我正在这样做:
//interface
public interface ObjSvcIntf {
default <Entity> ArrayList<Entity> get(Boolean active);
}
//implementation 1
public class ObjCarSvc implements ObjSvcIntf {
@SuppressWarnings("unchecked")
@Override
public ArrayList< ObjCar > get(Boolean active) {
@SuppressWarnings("rawtypes")
Query query = DB.s.createQuery("from " + ObjCar.class.getSimpleName() + " where active = :active");
query.setParameter("active", active);
if (!query.list().isEmpty()) {
return (ArrayList< ObjCar >) query.list();
} else {
return null;
}
}
//implementation 1
public class ObjPersonSvc implements ObjSvcIntf {
@SuppressWarnings("unchecked")
@Override
public ArrayList< ObjPerson > get(Boolean active) {
@SuppressWarnings("rawtypes")
Query query = DB.s.createQuery("from " + ObjPerson.class.getSimpleName() + " where active = :active");
query.setParameter("active ", active);
if (!query.list().isEmpty()) {
return (ArrayList< ObjPerson >) query.list();
} else {
return null;
}
}
正如您所看到的,每个实现类中都有很多冗余代码,我想避免这种情况。因此,我想要的是在接口中拥有一个通用的默认函数,该函数将为接口的每个实现返回相同的值(当然,除非被实现类覆盖)。即,类似这样的东西(当然,这不起作用):
public interface ObjSvcIntf {
default <Entity> ArrayList<Entity> get(Boolean active) {
@SuppressWarnings("rawtypes")
Query query = DB.s.createQuery("from " + Entity.class.getSimpleName() + " where active = :active");
query.setParameter("active", active);
return (ArrayList<Entity>) query.list();
}
}
我在这里缺乏正确的理解,如何以正确的方式在接口中创建函数,以便能够在不同的上下文/不同的类中使用它。
我该如何调整界面中的功能来实现这一点?
蓝山帝景
12345678_0001
呼啦一阵风
相关分类