我有一个XML文件如下.
当我使用getElementsByTagName("LEVEL2_ID"),我得到一个NodeList有Nodes,但这些节点有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) 我已经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) 我们为 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) JSFiddle:http://jsfiddle.net/xpvt214o/776660/
当选择框打开时,如果您尝试单击选择框级别之外的任意位置,它不会关闭。但是,如果您单击当前选择线的外部,则它会关闭。
当执行任何外部单击(包括在选择框的级别上)时,如何强制关闭 Select2 选择框?
PS 我正在使用该closeOnSelect: false选项来保持选择框在选择过程中始终打开 - 但它仍然应该在外部单击时关闭,
$('#dropdown').select2({
closeOnSelect: false
});
Run Code Online (Sandbox Code Playgroud)
另一个类似的问题-当 closeonselect 为 false 时关闭 select2
我需要将动态参数传递给 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) 我的理解是 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) 我在 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 获取useEffect。defaultChecked仅适用于第一次渲染。当第一次渲染发生时,显然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'},它既设置初始获取后值,又允许我进行切换。
我正在使用 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 插入,以消除混乱吗?
以下从JPA查询获取Spring Data Projection的方法对我不起作用:
我的桌子:
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) 我有一个常规的非静态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 ×3
jpa ×3
spring-data ×3
spring ×2
criteria-api ×1
dom ×1
equals ×1
flask ×1
formik ×1
hashcode ×1
hibernate ×1
jquery ×1
nodelist ×1
postgresql ×1
reactjs ×1
recursion ×1
sqlalchemy ×1
xml ×1