小编Dau*_*aud的帖子

如何使用postgres在string_agg中排除array_agg中的空值?

如果我array_agg用来收集名字,我会用逗号分隔我的名字,但是如果有一个null值,那么该null也被作为聚合中的名字.例如 :

SELECT g.id,
       array_agg(CASE WHEN g.canonical = 'Y' THEN g.users ELSE NULL END) canonical_users,
       array_agg(CASE WHEN g.canonical = 'N' THEN g.users ELSE NULL END) non_canonical_users
FROM groups g
GROUP BY g.id;
Run Code Online (Sandbox Code Playgroud)

它返回,Larry,Phil而不是仅仅Larry,Phil(在我的9.1.2中,它显示NULL,Larry,Phil).就像在这个小提琴

相反,如果我使用string_agg()它,它只向我显示这里的名称(没有空逗号或空值)

问题是我已经Postgres 8.4安装在服务器上,并且string_agg()在那里不起作用.有没有办法使array_agg的工作类似于string_agg()?

sql postgresql postgresql-9.1 postgresql-8.4

77
推荐指数
6
解决办法
5万
查看次数

将DAY_OF_MONTH或DAY_OF_YEAR添加到Calendar对象之间有什么区别?

我想将某个日期增加1天.我创建一个Calendar对象,如:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2012);
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 31);
Run Code Online (Sandbox Code Playgroud)

然后,为了增加它1天,我可以做两件事:

cal.add(Calendar.DAY_OF_MONTH, 1);
Run Code Online (Sandbox Code Playgroud)

要么

cal.add(Calendar.DAY_OF_YEAR, 1);
Run Code Online (Sandbox Code Playgroud)

还有其他"DAY"常量,但是我使用上述两种增加1的方法得到相同的结果.在这种情况下,我会得到两个不同的结果吗?

java datetime

50
推荐指数
5
解决办法
5万
查看次数

有没有什么办法可以使用Eclipse在Java字符串文字中编写(复制 - 粘贴)格式良好的SQL查询?

当我希望在Java中使用SQL查询时,我通常将它们保存在最终的String变量中.现在,当字符串太大时,它会超出页面宽度,我们要么必须手动打破它(在eclipse中,转到字符串中的特定位置,然后输入,并为每个产生的更小部分),或者我们可以在Eclipse中设置格式化程序,每行只允许(比方说)100个字符.但字符串不会以合理的方式被破坏.

我可以在SQL Developer(比如说)中很好地格式化一个查询,但是如果我将它粘贴到Java中,我将不得不手动设置所有的结束引号和+符号,使其成为一个合适的Java字符串.我只是想知道如何将格式正确的SQL查询直接复制粘贴到Java文件中.我正在使用Eclipse.

也许当查询格式如下:

SELECT
  *
 FROM
  something
 WHERE
  id=4;
Run Code Online (Sandbox Code Playgroud)

然后当它粘贴在一个java字符串里面时,我们就可以这样:

"SELECT" +
  " *" +
 " FROM" +
  " something" + 
 " WHERE";
  id=4;
Run Code Online (Sandbox Code Playgroud)

java eclipse formatting

24
推荐指数
3
解决办法
2万
查看次数

spring-security - 在哪里可以找到使用<http>元素时注册的所有安全过滤器的列表?

当我们<http>在xml文件中使用该元素时,会注册一组默认的过滤器.提到了过滤器的排序(无论我们选择哪种方式),在此之上,它提到:

<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
  <constructor-arg>
    <list>
      <sec:filter-chain pattern="/restful/**" filters="
           securityContextPersistenceFilterWithASCFalse,
           basicAuthenticationFilter,
           exceptionTranslationFilter,
           filterSecurityInterceptor" />
      <sec:filter-chain pattern="/**" filters="
           securityContextPersistenceFilterWithASCTrue,
           formLoginFilter,
           exceptionTranslationFilter,
           filterSecurityInterceptor" />
    </list>
  </constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)

如果以上是默认过滤器列表,那么在调试过程中,我发现它RequestCacheAwareFilter也被调用.调用此过滤器的位置以及它在过滤器链中的位置是什么?在哪个条件AnonymousAuthenticationFilter配置到链?

什么是为我配置的默认过滤器链?

编辑:我有applicationContext.xml和springSecurity.xml.以下是我的applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">

    <context:annotation-config />
    <context:spring-configured />

    <!-- Make sure that the part of the file until "End of beans" is identical
         to bean definitions in applicationContext.xml of the main application. --> …
Run Code Online (Sandbox Code Playgroud)

spring spring-security spring-3

21
推荐指数
2
解决办法
3万
查看次数

如何在JPQL或HQL中仅检索实体的某些字段?JPQL或HQL中的ResultSet等价物是什么?

在JPQL中,我可以通过以下方式检索实体:

query = entityManager.createQuery("select c from Category c");
List<Category> categories = query.getResultList();
Run Code Online (Sandbox Code Playgroud)

但是,如果我想检索Category实体的id和name字段(仅),我需要像ResultSet对象这样的东西,通过它我可以说:rs.getString("name")rs.getString("id").如何在JPQL不检索整个实体的情况下完成此操作?

基本上,对于如何从一个查询信息,如:select c.id,c.name from Category c

orm hibernate hql jpql

19
推荐指数
2
解决办法
5万
查看次数

哪个更有效:使用removeAll()或使用以下HashMap技术仅保留ArrayList中已更改的记录

我有2 ArrayListAB相同的数据结构C(hashCode()和equals()重写).C代表学生的记录.这两个列表大小相同,分别代表新的学生记录和旧学生记录(学生在两个列表中都是相同的,排序可能不同).我希望只保留A中那些已被更改的记录.因此,我这样做:

 A.removeAll(B)
Run Code Online (Sandbox Code Playgroud)

根据javadoc,这将获取A的每个记录并与B的每个记录进行比较,如果它们两者都相等,它将从A中删除记录.如果未发现A的记录等于任何记录. B,因为A中的所有学生也在B中,这意味着A的记录已经改变.问题是它容易产生n平方的复杂性.

另一种方法可以是:

Map<C> map = new HashMap<C>();
for (C record : B){
    map.add(record.getStudentId(),record);
}
List<C> changedRecords = new ArrayList<C>();
for (C record : A){
    if (record.equals(map.get(record.getStudentId())){
        changedRecords.add(record);
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这可能比上述解决方案的复杂性低.那是对的吗 ?

java performance arraylist hashmap removeall

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

如何从eclipse的tomcat插件中更改tomcat的端口

我正在使用Eclipse KeplerEclipseTotaletomcat插件.我Oracle XE在端口使用8080,并希望在端口运行Tomcat 9090.我已更改server.xml并更改此行的端口:

 <Connector connectionTimeout="20000" port="9090" protocol="HTTP/1.1" 
redirectPort="8443"/>
Run Code Online (Sandbox Code Playgroud)

它仍然说该地址已被使用.此外,我有点怀疑更改是否server.xml会产生任何影响,因为我已选择Context Decalration ModeContext Files而不是server.xml

有什么建议 ?

eclipse tomcat eclipse-plugin

13
推荐指数
3
解决办法
4万
查看次数

oracle:如何确保只有在所有剩余的where子句筛选出结果后才会调用where子句中的函数?

我正在写这个效果的查询:

select * 
from players 
where player_name like '%K% 
  and player_rank<10 
  and check_if_player_is_eligible(player_name) > 1;
Run Code Online (Sandbox Code Playgroud)

现在,函数check_if_player_is_eligible()很重,因此,我希望查询充分过滤搜索结果,然后只对过滤后的结果运行此函数.

如何确保在执行函数之前进行所有过滤,以便它运行的次数最少?

oracle optimization function filter

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

spring security - 有没有办法在我的应用程序中获取会话注册表(没有明确定制concurrentFilter)

我指的是这个帖子,在Rob Winch(Spring Security Lead)的第二篇文章中,他提到我们可以访问sessionRegisty:

<session-management>
  <concurrency-control session-registry-alias="sessionRegistry"/>
</session-management>
Run Code Online (Sandbox Code Playgroud)

因此,我注册HttpSessionEventPublisher过滤器web.xml并在我的<http>部分中指定上述设置.我添加这个:

<beans:bean id="sessionRegistry" class="org.springframework.security.core.session.SessionRegistryImpl" />
Run Code Online (Sandbox Code Playgroud)

在我的课堂上,我注入了一个sessionRegistry实例,如下所示:

@Autowired
private SessionRegistry sessionRegistry
Run Code Online (Sandbox Code Playgroud)

这就是我试图找出用户的会话的方法:

List<SessionInformation> userSessions = sessionRegistry.getAllSessions(username,false);
        for (SessionInformation userSession : userSessions){
            userSession.expireNow();
        }
Run Code Online (Sandbox Code Playgroud)

主体是用户的用户名.调试时,sessionRegistry变量principalssessionids变量为空.我在这里做错了什么,或者是krams博客提到的步骤,这是唯一的方法吗?

java session spring spring-security httpsession

11
推荐指数
1
解决办法
2万
查看次数

jquery - 拖动有序列表项时,后续项的编号总是增加1

虽然jQuery sortable widget在大多数情况下工作正常,但在一个情况下ordered list,numbering gets botched up when we drag an element.以下是一个示例程序来说明这一点:

<!DOCTYPE html>
<html>

    <head>
        <script src="jquery-1.6.2.min.js"></script>
        <script src="jquery-ui-1.8.16.custom.min.js"></script>
        <script>
            $(document).ready(function () {
                $('ol').sortable();
            });
        </script>
    </head>

    <body>
        <ol>
            <li>
                <label for="name">Name</label>
                <input type="text" id="name" />
            </li>
            <li>
                <label for="class">Class</label>
                <input type="text" id="class" />
            </li>
        </ol>
    </body>

</html>
Run Code Online (Sandbox Code Playgroud)

在拖动之前:

在此输入图像描述

拖动期间:

在此输入图像描述

拖动完成后,订单将恢复.之前已经注意到此错误,但未修复.有没有人找到治疗方法?

是它的小提琴

html css jquery jquery-ui jquery-ui-sortable

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