小编Way*_*oga的帖子

表或列名称不能以数字开头?

我试图创建15909434_user用以下语法命名的表:

CREATE TABLE 15909434_user ( ... )
Run Code Online (Sandbox Code Playgroud)

它当然会产生错误.然后,在我尝试与谷歌进行一些研究后,我在这里找到了一篇很好的文章描述:

在PostgreSQL中创建对象时,为该对象指定名称.每个表都有一个名称,每列都有一个名称,依此类推.PostgreSQL使用单一数据类型来定义所有对象名称:name类型.

type的值name是63个或更少字符的字符串.名称必须以字母或下划线开头; 字符串的其余部分可以包含字母,数字和下划线.

...

如果您发现需要创建不符合这些规则的对象,则可以将该名称括在双引号中.在引号中包含名称会创建带引号的标识符.例如,您可以创建一个名称为" 3.14159"的表- 双引号是必需的,但实际上并不是名称的一部分(即,它们不存储且不计入63个字符的限制)....

好的,现在我知道如何通过使用这种语法解决这个问题(在表名上加上双引号):

CREATE TABLE "15909434_user" ( ... )
Run Code Online (Sandbox Code Playgroud)

您可以创建表或列名称,例如"15909434_user",也user_15909434可以创建表或列名称,以数字开头而不使用双引号.

那么,我很好奇背后的原因(除了它是一个惯例).为何适用此惯例?它是为了避免语法限制或其他原因吗?

提前感谢您的关注!

sql postgresql naming-conventions

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

如何在log4j.xml中设置过滤器

HI,

在我们的Web应用程序中,它打印所有日志,如Spring和JSF jars文件.这对我们来说不是必需的.如何在log4j.xml文件中设置仅针对我们的应用程序进行过滤?

更新

以下是我们用于日志记录的配置.你能告诉我它是否正确吗?我必须在文件中添加logger元素?

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!-- Log4j Configuration file to log the messages into different logfiles -->
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

  <appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="D:/logs/DEBUGFILE.log"/>
     <param name="Append" value="true"/>
     <param name="MaxFileSize" value="500KB"/>
     <param name="MaxBackupIndex" value="2"/>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %p - %m%n"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
     <param name="LevelMin" value="DEBUG" />
      <param name="LevelMax" value="DEBUG" />
    </filter>
  </appender>

  <appender name="INFO" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="D:/logs/AUDIT_TRAIL.log"/>
    <param name="Append" value="true"/>
     <param name="MaxFileSize" value="500KB"/>
     <param name="MaxBackupIndex" value="2"/>
    <layout …
Run Code Online (Sandbox Code Playgroud)

logging log4j java.util.logging

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

Play Framework 2.0表单助手:从复选框到List <String>

我有一个包含String和列表的模型:

public String title;    
public List<String> topics;
Run Code Online (Sandbox Code Playgroud)

在index.scala.html中,我使用表单添加新项:

@form(routes.Application.newPaper()) {
    @inputText(paperForm("title"))
    <input type="submit" value="Create">
    }
Run Code Online (Sandbox Code Playgroud)

使用简单的String,这很好用.但我想显示复选框

@for(t <- topics) {
    <input type='checkbox' name='topic' value=@t>@t <br>
}
Run Code Online (Sandbox Code Playgroud)

然后将所有选中的"主题"添加到List<String> topics;我的新项目中.如何处理@form {...}中的复选框?

java forms playframework playframework-2.0

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

处理异步Web服务请求的异常

我仍然是使用Play!Framework 2.1 WS库实现Web服务请求的新手.现在,我在理解WS库行为方面存在问题.

首先,我有这样的代码:

public static Result espnRss() {
    try {
        // do request
        return async(
            WS.url("http://espnfc.com/rss/news?section=premierleague").get().map(
                new F.Function<WS.Response, Result>() {
                    @Override
                    public Result apply(WS.Response response) throws Throwable {
                        return ok("Success!"); // success request
                    }
                }
            )
        );
    } catch (Exception e) {
        // exception occured
        return internalServerError("Oops, connect exception occured!");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试请求espnRss操作时,我获得了SUCCESS响应.

然后,我想在请求上设置WS超时.所以,我改变了我之前的代码,如下所示:

public static Result espnRss() {
    try {
        // set request timeout for 1000 ms and do request
        return async(
            WS.url("http://espnfc.com/rss/news?section=premierleague").setTimeout(1000).get().map(
                ... // same …
Run Code Online (Sandbox Code Playgroud)

java playframework playframework-2.1

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