我正在使用 JDK 1.7 编写一个全新的自定义 doclet。这些是我目前发现的问题:
文件的方法isAnnotationType(),isAnnotationTypeElement(),isEnum()并且isEnumConstant()不工作。他们总是返回 false。
PackageDoc方法enums()不起作用。它总是返回一个空数组。Enums包含在方法allClasses()和的结果中ordinaryClasses()。
ClassDoc方法enumConstants()不起作用。它总是返回一个空数组。Enum常量包含在 method 的结果中fields()。
PackageDoc方法annotationTypes()不起作用。它总是返回一个空数组。Annotations包含在 method 的结果中interfaces(),因此我可以实施以下解决方法:
AnnotationTypeDoc annotationDoc;
ClassDoc[] interfaces = packageDoc.interfaces();
for (ClassDoc classDoc : interfaces) {
if (classDoc instanceof AnnotationTypeDoc) {
annotationDoc = (AnnotationTypeDoc) classDoc;
} else {
continue;
}
process(annotationDoc); …Run Code Online (Sandbox Code Playgroud) 根据文档(https://www.postgresql.org/docs/current/app-psql.html),即使AUTOCOMMIT设置为关闭,PSQL 也会BEGIN在尚未位于事务块中的任何命令之前发出隐式命令本身不是一个BEGIN或其他事务控制命令,也不是不能在事务块内执行的命令,例如VACUUM. (不幸的CALL是,与 的处理方式不同VACCUM)。而且,根据 Shaun Thomas ( https://blog.2ndquadrant.com/pg-phriday-stored-procedures-postgres-11/ ) 的说法,发生无效交易终止错误是因为无法关闭当前交易(在此情况下)情况是由 PSQL 启动的)在过程中。我尝试了所有与事务控制相关的PSQL设置,但都出现无效事务终止错误;即使 PSQL 处理的命令文件仅包含该CALL语句。
这是我调用的程序:
create or replace procedure producto$cargar_imagenes(_super$ bigint, _archivo$ character varying) as $$
declare
_msg character varying;
_log rastro_proceso%ROWTYPE;
begin
perform rastro_proceso_temporal$insert(_super$);
perform producto$cargar_imagenes$biz(_super$, _archivo$);
if (_super$ is not null and _super$ > 0) then
perform producto$cargar_imagenes$log(_super$, _archivo$);
else
perform tarea_usuario$private$update(6519204281880642486, null);
end if;
commit;
end;
$$ language plpgsql set search_path …Run Code Online (Sandbox Code Playgroud) annotations ×1
commit ×1
doclet ×1
enums ×1
javadoc ×1
plpgsql ×1
postgresql ×1
transactions ×1