小编NuC*_*dle的帖子

当Spring Boot中使用Hibernate Validator进行Bean验证失败时如何抛出自定义异常?

我正在使用 Spring Boot 2.0.1,其中包含验证启动程序(随Hibernate Validation 6.x一起提供),并尝试验证方法参数并返回 Spring 存储库层中的对象。该方法基本上有一个ParamObj和,ReturnObj

@Repository
@Validated // Spring integration of validation
public class MyRepoImpl implements MyRepo {

  @Override
  @Valid
  public ReturnObj myMethod(@Valid ParamObj param) throw CustomException {
    try {
       // makes a call that might throw an exception
    } catch (Exception e) {
      throw new CustomException(/*...*/, e);
    }

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

ParamObj并且ReturnObj两者都在其某些属性上使用一组简单的 Bean Validation 注释,例如@Pattern@Min等。我的问题是,使用这些注释,如果验证过程中的任何一个ParamObj或失败,都会抛出。ReturnObjMyRepoImpl#myMethod()javax.validation.ConstraintViolationException

然而,正如您所看到的,合同强制myMethod()要求抛出 …

java spring hibernate-validator bean-validation spring-boot

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

在Oracle中选择随机行

我需要从一个表中随机选择值,例如tableA.a_ida VARCHAR2,并使用该值插入另一个表中.例如,假设需要将三列插入100行tableX(序列号,100到999之间的随机数,以及值tableA.a_id):

insert into tableX
select
    rownum,
    dbms_random.value(100,999), 0),
    (select a_id from 
    (
      SELECT a_id 
      FROM tableA
      ORDER BY dbms_random.value
    )
    where rownum = 1)
from
   (select level from dual connect by level <= 100);
Run Code Online (Sandbox Code Playgroud)

但是,不是从tableA.a_id每行中选择一个随机行,而是为所有行选择相同的值,例如:

1 129 A-ID-48
2 849 A-ID-48
3 367 A-ID-48
Run Code Online (Sandbox Code Playgroud)

但是,如果我重复执行子查询,每次都会得到一个新值(原因很明显),例如:

select a_id from 
    (
      SELECT a_id 
      FROM tableA
      ORDER BY dbms_random.value
    )
where rownum = 1;
Run Code Online (Sandbox Code Playgroud)

结果将在每次执行后:

A-ID-7
A-ID-48
A-ID-74
Run Code Online (Sandbox Code Playgroud)

如何改变原来的查询,或拿出一个新的对于这个问题,这将来自随机行中插入tableA的 …

sql oracle random insertion

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

为什么不能扩展集合通用类型

我有一个实用方法,其目标是将a转换Collection为a Map.但是,当我尝试使用泛型时,它会出现编译错误,并且想知道如何修复它:

public static <K, V> Map<K, V> convertCollectionToMap(Collection<V extends ListToMapConvertable<K, V>> sourceList) {
    Map<K, V> newMap = new HashMap<K, V>();
    for (V item : sourceList) {
        newMap.put(item.getKey(item), item);
    }

    return newMap;
} 

public interface ListToMapConvertable<K, V> {
    public K getKey(V item);
}
Run Code Online (Sandbox Code Playgroud)

相反,我收到Incorrect number of arguments for type Collection<E>; it cannot be parameterized with arguments <V, ListToMapConvertable>编译错误.我不明白这个问题V只是延伸 ListToMapConverable.那么为什么它声称我使用了两个参数 - <V, ListToMapConvertable>?我该如何解决这个问题呢?

java generics collections

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

PL/SQL代码中的布尔变量解析和用法有什么问题?

我正在尝试编译以下PL/SQL:

PROCEDURE SP(INPUT1 IN VARCHAR2)
  V_BOL BOOLEAN := FALSE;
BEGIN
  IF (INPUT1 = 'XYZ')
    THEN V_BOL := TRUE;
  END IF;

  UPDATE T1 /* Line 17 */
  SET T1.C1 = (
    SELECT CASE
      WHEN (V_BOL AND T1.N1 BETWEEN 1 AND 10) THEN 'J' /* Line 20 */
      END
    FROM DUAL)
...
Run Code Online (Sandbox Code Playgroud)

但是得到以下错误:

Error(17,9): PL/SQL: SQL Statement ignored
Error(20,18): PL/SQL: ORA-00920: invalid relational operator
Run Code Online (Sandbox Code Playgroud)

sql oracle variables plsql compiler-errors

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