或()

时间:2018-12-03 08:00:53

标签: java querydsl

我是querydsl的新手,也许我某种程度上想念这个概念。 我想做的是获取所有对象,这些对象的名称以“ He”开头,或者生日已过,或者地址的街道以“ ge”开头。

在此处使用代码段时,我只会得到与第三个条件(person.adresse.strasse)匹配的人员对象。第一个zwo条件被完全忽略。 如果我注释掉第三个条件,则会得到两个第一个条件(person.name machtes或person.birthday.before)匹配的结果。

我在做什么错?我必须加入联接吗?

List<Person> persons = query.select( person )
            .from( person )
            .where(
                    person.name.startsWith( "He" )
                    .or( person.birthday.before( new Date( System.currentTimeMillis() ) )
                            .or( person.adresse.strasse.startsWithIgnoreCase( "ge" ) ) )
            )
            .fetch();

1 个答案:

答案 0 :(得分:0)

您的括号数字错误。

您无意中将第三个or嵌套在第二个or中,这就是为什么在注释第三个List<Person> persons = query.select( person ) .from( person ) .where( person.name.startsWith("He") .or(person.birthday.before(new Date(System.currentTimeMillis()))) .or(person.adresse.strasse.startsWithIgnoreCase("ge")) ) .fetch(); 时会得到正确的结果。

尝试一下:

let session = AVAudioSession.sharedInstance()
        do
            {
                try session.overrideOutputAudioPort(AVAudioSessionPortOverride.none)
                try session.setCategory(AVAudioSessionCategoryPlayAndRecord, with: .allowBluetooth)
                try session.overrideOutputAudioPort(AVAudioSessionPortOverride.init(rawValue: AVAudioSessionCategoryOptions.allowBluetooth.rawValue)!)
                try session.setActive(true)
            }
            catch let error {
                display_alert(msg_title: "Error", msg_desc: error.localizedDescription, action_title: "OK")
            }

应该可以。