小编Pet*_*vic的帖子

如何删除使用array_agg postgres函数生​​成的重复项

有没有人知道如何重写以下SQL查询来生成结果,那将只包含一次出现的名称?(按用户分组的结果).

查询

SELECT array_to_string(array_agg(CONCAT(u.firstname, ' ', u.lastname)), ', ')
FROM log_has_item logitem
  INNER JOIN log log ON log.id = logitem.log_id
  INNER JOIN worker u ON log.worker_id = u.id
WHERE logitem.company_id = 1
Run Code Online (Sandbox Code Playgroud)

可执行查询可在sqlfiddle.com获得.单击Run SQL按钮,结果将包含两次Frantisek Smith

sql postgresql select array-agg

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

如何使用JOINED继承策略和Hibernate创建现有超级对象的子对象

使用Hibernate创建持久超级对象的子对象的适当方法是什么?

请考虑以下示例:在数据库中持久保存UserID 1,firstName Kevin和laseName Smith.到时候是Auditor作为子类的新实体的数据库模型扩展了User.对于继承是使用策略JOINED,因此数据库模型现在有两个表:用户审计员.这些表使用user_id FK连接.

我想创建Kevin Smith对象类型的Auditor并坚持下去.问题是操作是事务性的,而Hibernate会抛出NonUniqueObjectException.以任何方式存在如何安全地转换持久化对象做子对象?我试图驱逐给定的User对象,但仍然是相同的.

用户实体

@Entity
@Table(name = "user")
@Inheritance(strategy = InheritanceType.JOINED)
public class User{

    private Long id;
    private String firstName;
    private String lastName;

    // getters and setters
}
Run Code Online (Sandbox Code Playgroud)

审计实体

@Entity
@Table(name = "auditor")
public class Auditor extends User {
  // some properties
}
Run Code Online (Sandbox Code Playgroud)

逻辑

public void createAuditorOfUser(final long userId) {
  final User user = userService.getUserById(userId);
  // ...
  final Auditor auditor = …
Run Code Online (Sandbox Code Playgroud)

java hibernate

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

用Spring依赖注入Generic子类型

我试图将特定的Generic bean注入Generic子类型,但Spring无法解析依赖项.通过从bean中删除类型,一切都按预期工作.这是一个例子:

public class AbstractFrom{
    // ...
}

public class EmployyForm extends AbstractFrom{
    // ...
}

public class CompanyForm extends AbstractFrom{
    // ...  
}

abstract class AbstractBean<T extends AbstractFrom>{

    public abstract void calculate(T form); 
}

@Component
public CompanyBean extends AbstractBean<CompanyForm>{

    public void calculate(CompanyForm form){
        // specific impl
    }   
}

@Component
public EmployeeBean extends AbstractBean<EmployyForm>{

    public void calculate(EmployyForm form){
        // specific impl
    }   
}
Run Code Online (Sandbox Code Playgroud)

这是一个目标类:

 @Service
    public BaseService{

        @Autowire
        public AbstractBean<AbstractFrom> baseBean; // <- NoSuchBeanDefinitionException

        // @Autowire
        // public AbstractBean baseBean; …
Run Code Online (Sandbox Code Playgroud)

java generics spring dependency-injection autowired

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

未在AJAX(JSON)请求上调用PropertyEditor

我在表单提交上遇到Ajax请求问题.表单包含以下stringify JSON数据:

{"articleContent":"<p>aaa</p>","title":"Po vypln?ní titulku aktuality budete","header":"aa","enabled":false,"timestamp":"1358610697521","publishedSince":"03.01.2013 00:00","publishedUntil":"","id":"10"}
Run Code Online (Sandbox Code Playgroud)

当json包含"03.01.2013 00:00"值时,服务器响应为400 Bad Request

问题是,不调用自定义DateTimePropertyEditor(使用@InitBinder注册),并且不传输String格式的DateTime.你有什么想法如何解决这个问题?

控制器映射方法,即处理请求

@RequestMapping( value = "/admin/article/edit/{articleId}", method = RequestMethod.POST, headers = {"content-type=application/json"})
public @ResponseBody JsonResponse  processAjaxUpdate(@RequestBody Article article, @PathVariable Long articleId){
    JsonResponse response = new JsonResponse();
    Article persistedArticle = articleService.getArticleById(articleId);
    if(persistedArticle == null){
        return response;
    }
    List<String> errors = articleValidator.validate(article, persistedArticle);

    if(errors.size() == 0){
        updateArticle(article, persistedArticle);
        response.setStatus(JsonStatus.SUCCESS);
        response.setResult(persistedArticle.getChanged().getMillis());
    }else{
        response.setResult(errors);
    }

    return response;
}
Run Code Online (Sandbox Code Playgroud)

InitBinder

 @InitBinder
        public void initBinder(WebDataBinder binder) {
            binder.registerCustomEditor(DateTime.class, this.dateTimeEditor);
        }
Run Code Online (Sandbox Code Playgroud)

java ajax spring json spring-mvc

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

在Excel /宏中将字符串转换为双精度

我尝试在Excel中创建新函数,将计算给定的值(类似于SUM函数,但只有给定的前缀).

  A
---------    
1|AA30  
2|AA10 
3|BC446 
4|AA10

// result will be 50  on SUM_PREFIX(A1:A4;"AA")
Run Code Online (Sandbox Code Playgroud)

问题是,当值为例如AA10,434或AA4.43时.我可以帮我解决问题吗?这是我在VB中的第一个stript.

 Function SUM_PREFIX(Data As Range, prefix As String) As Double

    Dim result As Double
    Dim strVal As String
    Dim i As Integer
    Dim objRegExp As Object

   Set objRegExp = CreateObject("vbscript.regexp")
   With objRegExp
        .IgnoreCase = True
        .MultiLine = False
        .Pattern = "^[" + prefix + "]+[0-9]+(\,|\.)?[0-9]?$"
        .Global = True
    End With

    For i = 1 To Data.Rows.Count
        Debug.Print Data.Cells(i, 1)
        If objRegExp.Test(Data.Cells(i, 1)) = True Then
            strVal …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

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