小编Til*_*ler的帖子

Oracle的字符串OUTER JOIN(+) - Migration PostgreSQL

我正在将客户端的软件数据库从Oracle迁移到PostgreSQL,我在理解查询,它做了什么以及如何迁移它时遇到了一些麻烦.

查询是:

SELECT * 
FROM TBL1, TBL2, TBL3, TBL4 
WHERE TBL3.Project_ID = TBL1.Project_ID 
 AND TBL2.Type_ID = TBL1.Type_ID 
 AND TBL4.PROPERTY_NAME(+)='Id' 
 AND TBL4.Entity_ID(+)=TBL1.Entity_ID
Run Code Online (Sandbox Code Playgroud)

而我得不到的部分是'Id'上的外连接(+).表上的连接,OK,但是在字符串上?我不知道它做了什么.

有人有想法吗?谢谢.

oracle postgresql join database-migration outer-join

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

弱引用和匿名类

我所处的情况是,我有一个静态列表缓存一些引用。由于这是一个静态列表,我想使用 Wea​​kReference,这样我就不会无用地将对象保留在内存中。

我认为问题是其中一个引用是匿名类。我担心的是,如果我将匿名类存储为 WeakReference,它可能会很快被收集,而如果我将匿名类存储为强引用,它将保存对构造匿名类的类的引用。

不知道我的解释是否清楚,所以这里是一段代码:

public interface Callback {
    void call();
}

public class A {
    public void doIt() {
        B.register(this, new Callback() {
            public void call() {
                // do something
            }
        });
    }
}

public class B {
    private static final List<Item> ITEMS = new LinkedList<>();

    public static void register(Object key, Callback callback) {
        Item item = new Item();
        item.key = new WeakReference<>(key);

        // ??
        item.callback = new WeakReference<>(callback);

        ITEMS.add(item);
    }

    private static class Item {
        private WeakReference<Object> key; …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection weak-references

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

MongoDB - 仅检索匹配的子文档和根文档

编辑:问题解决了,见下文.

我有以下文件:

db.clients.insert({
    _id: ObjectId("524d720d8d3ea014a52e95bb"),
    company: "Example",
    logins: [
        {
            "name": "John Smith",
            "username": "test",
            "password": "eF9wnBEys0OzL5vmR/OHGCaekHiw/Miy+XvbDdayxeo=",
            "email": "a@a.com",
            "last": null,
            "roles": ["CONFIG"]
        },
        {
            "name": "Guest",
            "username": "guest",
            "password": "K/gYODb7XPo0erySvL276DyPi4+stPPK4jM3pJ8aaVg=",
            "email": "a@a.com",
            "last": null,
            "roles": []
        }
    ]
});
Run Code Online (Sandbox Code Playgroud)

现在,我想使用此文档对我的客户进行身份验证.但是,我不想检索每个子登录,我只想要匹配的那个.

这就是我使用聚合的原因:

db.clients.aggregate(
    {
        "$project": {
            "login": "$logins",
            "_id": 0
        }
    },
    {
        "$unwind": "$login"
    },
    {
        "$group": {
            "_id": "$login.username",
            "login": {
                "$first": "$login"
            }
        }
    },
    {
        "$match": {
            "login.username": "test",
            "login.password": "eF9wnBEys0OzL5vmR/OHGCaekHiw/Miy+XvbDdayxeo=",
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,给我:

{ …
Run Code Online (Sandbox Code Playgroud)

mongodb

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