如果我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()?
我想将某个日期增加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中使用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) 当我们<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) 在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?
我有2 ArrayList秒A和B相同的数据结构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)
我认为这可能比上述解决方案的复杂性低.那是对的吗 ?
我正在使用Eclipse Kepler和EclipseTotaletomcat插件.我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 Mode为Context Files而不是server.xml
有什么建议 ?
我正在写这个效果的查询:
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()很重,因此,我希望查询充分过滤搜索结果,然后只对过滤后的结果运行此函数.
如何确保在执行函数之前进行所有过滤,以便它运行的次数最少?
我指的是这个帖子,在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变量principals和sessionids变量为空.我在这里做错了什么,或者是krams博客提到的步骤,这是唯一的方法吗?
虽然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)
在拖动之前:

拖动期间:

拖动完成后,订单将恢复.之前已经注意到此错误,但未修复.有没有人找到治疗方法?
这是它的小提琴
java ×4
eclipse ×2
spring ×2
arraylist ×1
css ×1
datetime ×1
filter ×1
formatting ×1
function ×1
hashmap ×1
hibernate ×1
hql ×1
html ×1
httpsession ×1
jpql ×1
jquery ×1
jquery-ui ×1
optimization ×1
oracle ×1
orm ×1
performance ×1
postgresql ×1
removeall ×1
session ×1
spring-3 ×1
sql ×1
tomcat ×1