小编tec*_*rat的帖子

Neo4j 匹配... UPSERT 的合并密码语法正在返回(无行)

我昨天刚开始使用 Neo4j 学习 GraphDB,现在,我想执行如下所示的 UPSERT 操作;

match (circle:Circle {id:3, cycleId:5})
merge (member1:Member {id:1}) -[invited:INVITED_TO_JOIN {c:circle, time:timestamp()}]-> (member2:Member {id:2})
return member1, member2, invited, circle
Run Code Online (Sandbox Code Playgroud)

根据此处的文档http://neo4j.com/docs/stable/query-merge.html,如果具有指定属性的节点不存在,则应创建节点和指定的关系,否则应进行更新对节点和关系执行。然而这并没有发生。我只收到这样的回复(no rows):见下文;

在此输入图像描述

有人可以指出我可能做得不正确吗?

编辑: 但我想动态 创建circle,member1它们的关系member2,而不用担心节点以前是否存在,但如果它们已经存在,只需相应地更新它们


编辑:在 @DaveBennet @cybersam 和 @MichaelHunger 的评论和建议后让自己更清楚

主要目标:)建立一种暗示member1邀请member2加入的关系circle3

  1. 如果节点/关系不存在,则创建它们
  2. 如果节点/关系存在则更新它们

在所有情况下,任何节点或关系都不应该重复

这应该不会像现在这样困难。我真的开始认为文档未能正确传达某些内容?

另请参阅此处:http ://neo4j.com/docs/stable/query-create-unique.html

让我困惑的是,为什么在/查询返回行之前必须有一个精确的节点匹配?这不会违背查询本身的目的吗?...尤其是在创建方面?match...mergematch...create unique

我什至创建了一个节点,如下所示

create (member:Member) return member
Run Code Online (Sandbox Code Playgroud)

然后尝试以下查询 - …

java neo4j graph-databases

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

为什么Quartz Scheduler无法正确检查JobDetail的存在?

我有以下构建新JobDetail实例的方法;

    private JobDetail getJob(JobID jobID) throws SchedulerException {
        Class<? extends Job> jobClass = jobID.getJobClass();
        if(jobClass != null){
            return JobBuilder
                    .newJob(jobClass)
                    .withIdentity(jobID.jobName(), jobID.jobGroup())
                    .requestRecovery(true)
                    .build();
        }
        return null;
    }
Run Code Online (Sandbox Code Playgroud)

注意:JobID这只是我的帮助程序类,它提供了构建数据库所需的所有必要原始数据JobDetail

然后是另一种进行实际调度的方法;

    doSchedule(Scheduler scheduler, JobDetail job, String triggerName){

        Trigger trigger = buildSomeTrigger(triggerName);

        //check whether job exists in scheduler instance
        if(scheduler.checkExists(job.getKey())){

            //If trigger also exists, then it probably holds new info
            //So, reschedule the existing job with the trigger
            if(scheduler.checkExists(trigger.getKey())){
                System.out.println("update job with Trigger");

                job = job.getJobBuilder().storeDurably(true).build();
                scheduler.addJob(job, …
Run Code Online (Sandbox Code Playgroud)

java quartz-scheduler

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

如何使用 JPA Criteria API 搜索字符串的日期字段

这是一个从我这里的另一个问题衍生出来的问题。我认为最好在有人(@Franck)指出这个链接这个链接之后提出一个不同的问题。

我对如何使用 JPA Criteria API 在数据库日期列(在我的例子中是 MySQL DATETIME)中搜索字符串感到困惑

这是我所做的;

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Client> cq = cb.createQuery(Client.class);
Root<Client> entity = cq.from(Client.class);
cq.select(entity);

List<Predicate> predicates = new ArrayList<Predicate>();
predicates.add(cb.like(cb.lower(entity.get("dateJoined").as(String.class)), "%"+search.toLowerCase()+"%")); 

cq.where(predicates.toArray(new Predicate[]{}));
TypedQuery<Client> query = em.createQuery(cq); //<--- Error gets thrown here
return query.getResultList();
Run Code Online (Sandbox Code Playgroud)

但它失败了,但有以下例外;

java.lang.IllegalArgumentException: Parameter value [%10-2015%] did not
match expected type [java.lang.Character]
Run Code Online (Sandbox Code Playgroud)

10-2015正在搜索的字符串在哪里;

我被困在如何实现这一目标上。我需要帮助。

java mysql jpa

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

如何修复com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许任何操作.例外?

这是我保存记录的查询.


public void saveTotal(JTextField txtGtotal, JTextField txtPTotal) {
    try {
        ResultSet rs = JDBC.getData("select MAX(or_id) as or_id from `order`");
        if (rs.first()) {
            if (rs.getInt("or_id") > 0) {
                try {
                    String date1 = new Validation().today();
                    boolean b1 = JDBC.putData("insert into transaction(tr_date, amount, tr_type) values ('" + date1 + "' , '" + txtGtotal.getText() + "' , 'order')");
                    if (b1) {
                        try {
                            ResultSet rs1 = JDBC.getData("select MAX(tr_id) as tr_id from transaction");
                            if (rs1.first()) {
                                try {
                                    boolean b2 = JDBC.putData("insert into …
Run Code Online (Sandbox Code Playgroud)

java mysql transactions jdbc

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

为什么这个看似合法的MySQL Query会出错?

首先,我有一个名为目标的

+----+-----------+---------------------+---------------------+
| id | member_id | created_at          | updated_at          |
+----+-----------+---------------------+---------------------+
|  8 |         4 | 2016-08-08 15:36:06 | 2016-08-08 15:36:06 |
|  9 |         4 | 2016-08-08 15:38:37 | 2016-08-08 15:38:37 |
| 10 |         4 | 2016-08-08 15:44:13 | 2016-08-08 15:44:13 |
| 11 |         4 | 2016-08-08 16:45:14 | 2016-08-08 16:45:14 |
| 12 |         4 | 2016-08-08 16:54:10 | 2016-08-08 16:54:10 |
| 13 |         4 | 2016-08-08 17:04:13 | 2016-08-08 17:04:13 | …
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

标签 统计

java ×4

mysql ×3

graph-databases ×1

jdbc ×1

jpa ×1

neo4j ×1

quartz-scheduler ×1

sql ×1

transactions ×1