小编gen*_* b.的帖子

DOM getElementsByTagName()返回具有NULL值的节点

我有一个XML文件如下.

当我使用getElementsByTagName("LEVEL2_ID"),我得到一个NodeListNodes,但这些节点有NULL值(换句话说,getNodeValue()每个节点的结果将返回NULL).为什么是这样?在这种情况下,我需要获取每个节点的内容值2000.

XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
    <Date>01/17/2012</Date>
    <LEVEL1>
        <LEVEL1_ID>1000</LEVEL1_ID>

        <LEVEL2>
           <LEVEL2_ID>2000</LEVEL2_ID>
        </LEVEL2>
    </LEVEL1>
</Root>
Run Code Online (Sandbox Code Playgroud)

在Java中,打印使用getElementsByTagName()获取的第一个节点的将返回NULL:

NodeList nodes = document.getElementsByTagName("LEVEL2_ID");

System.out.println("Value of 1st node: " + nodes.item(0).getNodeValue());
Run Code Online (Sandbox Code Playgroud)

java xml dom nodelist

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

从equals()调用hashCode()

我已经hashCode()为我的类定义了一个冗长的类属性列表.

根据合同,我还需要实现equals(),但是可以通过hashCode()内部比较来实现它,以避免所有额外的代码吗?这样做有危险吗?

例如

@Override
public int hashCode() 
{
    return new HashCodeBuilder(17, 37)
        .append(field1)
        .append(field2)
    // etc.
    // ...
}

@Override
public boolean equals(Object that) {
    // Quick special cases
    if (that == null) {
        return false;
    }
    if (this == that) {
        return true;
    }
    // Now consider all main cases via hashCode()
    return (this.hashCode() == that.hashCode());
}
Run Code Online (Sandbox Code Playgroud)

java equals hashcode

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

带有 JPA 的 Spring Data 不会在出错时回滚事务

我们为 JPA 配置了 Spring Data。服务事务方法不会因错误(例如 DB ConstraintViolationException)而回滚。

我能找到的最接近的是这个 (事务不回滚)Spring-data、JTA、JPA、Wildfly10 但我们没有任何 XML 配置,我们所有的配置都是基于 Java 的。

本质上,一个服务方法看起来像这样:没有错误被捕获,一切都被抛出。

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = false)
public void insertEvent() throws Exception {
     // Part 1
     EventsT event = new EventsT(); 
     // populate it..
     eventsDAO.save(event);

     // Part 2 - ERROR HAPPENS HERE (Constraint Violation Exception)
     AnswersT answer = new AnswersT();
     // populate it..
     answersDAO.save(answer);   
}
Run Code Online (Sandbox Code Playgroud)

第 2 部分失败。但是在错误并返回之后,我看到事件(第 1 部分)仍然填充在数据库中。

我们还尝试了@Transactional 的各种组合,但没有任何效果:

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = false)
@Transactional(readOnly = …
Run Code Online (Sandbox Code Playgroud)

spring jpa spring-data spring-data-jpa

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

Select2 在单击外部时不会关闭选择框(closeOnSelect=false)

JSFiddle:http://jsfiddle.net/xpvt214o/776660/

当选择框打开时,如果您尝试单击选择框级别之外的任意位置,它不会关闭。但是,如果您单击当前选择线的外部,则它会关闭。

当执行任何外部单击(包括在选择框的级别上)时,如何强制关闭 Select2 选择框?

PS 我正在使用该closeOnSelect: false选项来保持选择框在选择过程中始终打开 - 但它仍然应该在外部单击时关闭,

$('#dropdown').select2({
    closeOnSelect: false
});
Run Code Online (Sandbox Code Playgroud)

另一个类似的问题-当 closeonselect 为 false 时关闭 select2

jquery jquery-select2

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

Postgres Interval Spring Data 动态参数不起作用

我需要将动态参数传递给 Spring Data Postgres 本机查询。参数位于区间表达式中。

在运行代码时,我从 pgAdmin 验证以下内容仅返回 1 个结果(正确):

select * from recalls_t where created_date <= (now() - interval '18 hour')

问题:

1)在Spring Data代码中,以下?1表示法错误地返回2个结果

@Query(value="select * from recalls_t where created_date <=  (now() - interval '?1 hour')", 
       nativeQuery=true)
public List<RecallsT> findActiveRecallsInLastHrs(@Param("hours") int hours);
Run Code Online (Sandbox Code Playgroud)

2)然后我尝试了这个线程中的解决方案:Postgres Interval not work with native spring data JPA query

他们说要使用单个单位间隔的倍数。但这也会错误地返回 2 个结果

@Query(value="select * from recalls_t where created_date <=  (now() - 
       (interval '1 hour') * :hours)", 
       nativeQuery=true)
public …
Run Code Online (Sandbox Code Playgroud)

postgresql spring-data spring-data-jpa

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

Hibernate Criteria API 已弃用,但 JPA Criteria API 很复杂且几乎无法使用(例如用于连接)

我的理解是 Hibernate Criteria API 已被弃用:

从 Hibernate 5.2 开始,应使用 JPA Criteria API

但在 Hibernate Criteria API 中,构建复杂的查询JOINs很容易。我可以这样做:

Criteria criteriaQuery = session.createCriteria(Request.class);
// 1. Prepare aliases (JOINs) from main table
if (!StringUtils.isBlank(searchCriteria.getRequestorName())) {
    criteriaQuery.createAlias("requestor", "npRequestor", JoinType.INNER_JOIN);
}
if (!StringUtils.isBlank(searchCriteria.getApproverName())) {
    criteriaQuery.createAlias("workflows", "wf", JoinType.INNER_JOIN);
    criteriaQuery.createAlias("wf.approver", "npApprover", JoinType.INNER_JOIN);
}
// Prepare criteria
// ...
criteriaQuery.add(Restrictions.eq("wf.someAttribute", someAttr));
}       
Run Code Online (Sandbox Code Playgroud)

但是在JPAJOINs Criteria API 中进行复杂的查询是极其困难的。正如该线程中的一位用户指出的那样,“我很难使用 Criteria API 创建复杂的联接,并且找不到大量的文档和示例。

简单的 Join 需要创建 a Metamodel(一个单独的进程),然后创建一个EntityType,并且语法很难构造。下面只是最简单的示例,但我有多个 If/Else 条件和多路联接。

CriteriaQuery<Pet> …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa criteria-api hibernate-criteria

5
推荐指数
0
解决办法
397
查看次数

Formik 中具有初始值的复选框未切换,需要处理 Checked/defaultChecked

我在 Formik 中有一个复选框,其初始值是在数据库获取后确定的,该复选框填充values. 但是,如果我执行以下操作,那么尽管初始值是正确的,但我无法切换该复选框,它始终保持选中状态。

<Form.Control type="checkbox" 
              id="checkCertAgreement" 
              name="certAgreement"
              checked={values.certifyAndReview === 'Y'}
              value="Y"
              onChange={handleChange} 
              onBlur={handleBlur}   
/>
Run Code Online (Sandbox Code Playgroud)

这意味着我不能使用checked但必须使用defaultChecked。但问题是,我values在初始获取中进行了 Ajax 获取useEffectdefaultChecked仅适用于第一次渲染。当第一次渲染发生时,显然values还没有加载并且values.certifyAndReview === 'Y'是错误的。所以现在我的复选框的初始值不再起作用,尽管我现在可以切换。

<Form.Control type="checkbox" 
              id="checkCertAgreement" 
              name="certAgreement"
              defaultChecked={values.certifyAndReview === 'Y'}
              value="Y"
              onChange={handleChange} 
              onBlur={handleBlur}   
/>
Run Code Online (Sandbox Code Playgroud)

有什么解决办法吗? 注意:由于某种原因,单选按钮上不会出现此问题。在单选按钮上,当我指定 时checked={values.field === 'Y'},它既设置初始获取后值,又允许我进行切换。

reactjs react-bootstrap formik

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

Flask SqlAlchemy:对于 JSON 类型返回 None 插入“null”字符串,而不是真正的 NULL

我正在使用 Flask SqlAlchemy。我正在将数据插入 Postgres 数据库,并且有一个JSON列类型。当没有数据时,我返回的None目的是将 NULL 设置到列中。这就是这里的建议。

if someCondition:
    json_obj = json.dumps(my_dict)
    return json_obj
else:
    return None # this inserts a 'null' string incorrectly
    # Only this works correctly:
    return null() # imported from sqlalchemy, 
Run Code Online (Sandbox Code Playgroud)

但我看到这插入了一个"null"字符串。获得真正的 NULL 的唯一方法是使用sqlalchemy.null(). 其他人在这个线程中注意到了同样的事情。下面是这两种方法的区别。有人可以确认None应该用于 NULL 插入,以消除混乱吗?

在此输入图像描述

sqlalchemy flask

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

Spring Data Projection和Error:"在结果元组中找不到别名!确保您的查询定义了别名!"

以下从JPA查询获取Spring Data Projection的方法对我不起作用:

/sf/answers/3181064351/

我的桌子:

LOOKUP_T

id   description    display_order_num
------------------------------------
1    Category #1    1
2    Category #2    2
Run Code Online (Sandbox Code Playgroud)

ACTIVITIES_T(activity_category_id映射到LOOKUP_T.id)

id  activity_category_id  activity_title
---------------------------------------
1      2                  Sleeping
2      2                  Eating
3      2                  Travel
Run Code Online (Sandbox Code Playgroud)

Spring Data DAO接口从此连接获取某些字段:

@Repository
public interface ActivitiesDAO extends JpaRepository<ActivitiesT, Integer> {

    @Query("select a.activityTitle, l.description as category, " + 
           "l.displayOrderNum as categoryDisplayOrderNum " + 
           "from ActivitiesT a, LookupT l " + 
           "where a.lookupT.id = l.id order by l.displayOrderNum asc ")
    public List<MySpringDataProjection> findCustom();

}
Run Code Online (Sandbox Code Playgroud)

Spring Data Projection Model接口:

public …
Run Code Online (Sandbox Code Playgroud)

spring jpa spring-data spring-data-jpa

4
推荐指数
2
解决办法
2153
查看次数

在try-catch块中递归调用重试N次

我有一个常规的非静态sendMail方法,有时可能会失败。我需要捕获任何错误并重试该方法 N 次。我不确定我做的是否正确,而且还有一个编译错误:

public void sendMail(List<String> params) {

   try {
       //...

       static int retrycount = 0; // static not allowed here (but need to keep static var for recursion)
       int maxretries = 3;
   }
   catch (Exception e) {
       log.info(e);
       // Recursion to retry
       sendMail(params);
       retrycount++;
   }
}
Run Code Online (Sandbox Code Playgroud)

首先,try/catch 块的递归是否正确?另外,有更好的方法吗?

我无法使该sendMail方法成为静态方法,现有代码中对其的引用太多。

java recursion

4
推荐指数
2
解决办法
1981
查看次数