我正在使用 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()要求抛出 …
我需要从一个表中随机选择值,例如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的 …
我有一个实用方法,其目标是将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>?我该如何解决这个问题呢?
我正在尝试编译以下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)