小编Dan*_*ses的帖子

JasperReports中的条件Where子句

假设我想要一个JasperReport,让用户可以根据需要过滤日期.SQL如下:

select * from foo where bar = $P{bar} and some_date > $P{some.date}
Run Code Online (Sandbox Code Playgroud)

现在,如果他们没有通过日期,我不想按某个日期过滤.我发现以下人们使用的kludge:

select * from foo where bar = $P{bar} $P!{some.date.fragment}
Run Code Online (Sandbox Code Playgroud)

并且some.date.fragment参数使用以下默认值定义:

($P{some.date} == null || $P{some.date}.equals("")) ? "" : "AND some_date >'" + new java.sql.Date($P{some.date}.getTime()).toString() + "'"
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为toString不以我的SQL服务器理解的格式输出日期.我想条件仍然使用jdbc驱动程序的预准备语句并输入参数,我只是希望准备好的语句依赖于参数是否为null.可以这样做吗?

sql jasper-reports where-clause

7
推荐指数
1
解决办法
8282
查看次数

Oracle阻止重复插入

考虑一个有多个课程注册请求的系统.我们需要一种方法来阻止系统中的重复注册.我创建了一个触发器,如下所示,但是当我同时从不同的连接获得两个请求(相隔ms)时,它们都被插入.我究竟做错了什么

create trigger enrollment_duplicates
before insert
on enrollment
for each row
begin
    select count(*) 
      into cnt 
      from enrollment 
     where user = :new.user 
       and course = :new.course 
       and status = 'Enrolled';
    if cnt > 0 then
        raise_application_error(-20001, 'User already enrolled in course');
    end if;
end;
Run Code Online (Sandbox Code Playgroud)

编辑:

如果我们使用户/课程成为一个独特的约束,这很容易,但事实并非如此.他们可以根据状态重新注册.

sql oracle race-condition

4
推荐指数
1
解决办法
130
查看次数

JSF渲染时的ID相同

假设我使用的rendered基本上是一个案例陈述.我有一个输入字段的标签和消息,但我希望字段本身根据具体情况而改变.因此:

<p:inputText id="foo" value="#{myBean.params[paramKey]}" 
   rendered="#{paramIsInput}" />
<p:calendar  id="foo" value="#{myBean.params[paramKey]}" 
   rendered="#{paramIsCalendar}" />
Run Code Online (Sandbox Code Playgroud)

如果我这样做,那么我得到以下错误: java.lang.IllegalStateException: Component ID j_idt64:foo has already been found in the view.

作为一种解决方法,我为每个参数类型创建了许多标签/消息并更改了它们的ID.但这带来了我的问题.如果实际只渲染了一个带有id的组件,为什么我在jsf文件中定义了多个?有没有办法让他们拥有所有相同的ID?

jsf identifier duplicates illegalstateexception

1
推荐指数
1
解决办法
4543
查看次数