java - OrmLite 多对多的扭曲

标签 java android ormlite

给出这个多对多的例子:

    @DatabaseTable
    public class Band {

        @DatabaseField(foreign = true, foreignAutoRefresh = true)
        private Music music;

        @ForeignCollectionField
        private ForeignCollection<Music> musics;
    }

    @DatabaseTable
    public class Music {

        @DatabaseField(foreign = true, foreignAutoRefresh = true)
        private Band band;

        @ForeignCollectionField
        private ForeignCollection<Band> bands;
    }

如果我更新已经存在并且已经有关联乐队的音乐以将新乐队添加到音乐内部 ForeignCollection 中,我将必须覆盖该音乐上的“Band”对象引用以便能够看到稍后在新乐队内部 ForeignCollection 中播放音乐。

但是,嘿,这意味着以前关联的另一个乐队现在将无法在其 ForeignCollection 中看到给定的音乐,对吧?

我怎么能解决这个问题?...我怎么能拥有由多个乐队拥有并出现在每个乐队 ForeignCollection 中的音乐,反之亦然。

(很抱歉这个冗长的问题,如果需要我可以尝试提供更好的说明)

编辑:

顺便说一下,我看过 -> https://github.com/j256/ormlite-jdbc/blob/master/src/test/java/com/j256/ormlite/examples/manytomany/ManyToManyMain.java 中的示例

但它似乎适用于不同的情况。

最佳答案

If i update a music that already exists and already has an associated band to add a new band to the music inner ForeignCollection, i will have to overwrite the "Band" object reference on that music in order to be able to see that music in the new Band inner ForeignCollection later.

有趣的问题。不确定在这里做什么是正确的。也许有某种对象管理器,因此您可以将 Band 添加到 Music(反之亦然),它会更新适当的实体以保持它们同步。

但这不是最好的解决方案。

关于java - OrmLite 多对多的扭曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19306180/

相关文章:

java - 使用 OrmLite 在数据库中更改默认 boolean 值

android - 列出ormlite db android的所有表

java - 使用正则表达式替换字符串结尾

Java Selenium - 清除搜索过滤器后仅断言一个 CSS 类处于 Activity 状态

Android:如何设置 DatePicker 的样式?

android - 查看动画(调整球的大小)

java - 更好地理解接口(interface)

java - 如何跨浏览器运行 Cucumber 场景?

android,无需遍历所有位置即可找到最近的位置

android - 如何使用 ORMLite 正确注释继承类?