mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
WIP: fix TQRootBean.exists() when used with .or()
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package org.querytest;
|
||||
|
||||
import org.example.domain.Contact;
|
||||
import org.example.domain.Customer;
|
||||
import org.example.domain.query.QCustomer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.time.LocalDate;
|
||||
@@ -9,6 +11,8 @@ import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class QCustomerAndOrTest {
|
||||
|
||||
@Test
|
||||
@@ -55,6 +59,30 @@ public class QCustomerAndOrTest {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOrWithExists() {
|
||||
QCustomer query = Customer.find.typed()
|
||||
.alias("customer")
|
||||
.or()
|
||||
.name.eq("Superman")
|
||||
.exists(Contact.find.typed()
|
||||
.alias("contact")
|
||||
.firstName.eq("Superman")
|
||||
.raw("contact.customer_id = customer.id")
|
||||
.query()
|
||||
)
|
||||
.endOr()
|
||||
.select(QCustomer.alias().id);
|
||||
|
||||
query.findList();
|
||||
|
||||
assertThat(query.getGeneratedSql()).isEqualTo(
|
||||
"select customer.id from be_customer customer where (" +
|
||||
"customer.name = ? or exists (select 1 from be_contact contact where " +
|
||||
"contact.first_name = ? and contact.customer_id = customer.id))"
|
||||
);
|
||||
}
|
||||
|
||||
private Date fiveDaysAgo() {
|
||||
LocalDateTime fiveDaysAgo = LocalDate.now().atStartOfDay().minusDays(5);
|
||||
return new Date(fiveDaysAgo.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
|
||||
|
||||
Reference in New Issue
Block a user