如何加入ObjectBox
How to Join in ObjectBox
如何将两个 类 加入 ObjectBox 中,它们具有一二多的关系?
我有两个表如下:
@实体
public class Animal {
@Id(assignable = true)
public long id;
private String name;
private boolean flying;
private boolean swimming;
private boolean walking;
private ToOne<Zoo> zoo;
.../*setters and getters*/
}
和:
@Entity
public class Zoo {
@Id
public long id;
private String name;
// a Zoo can have many Animals
@Backlink
ToMany<Animal> animals;
.../*setters and getters*/
}
如何实现Join操作?
从版本 2.0.0
开始,您可以执行以下操作:
val builder = box.query().equal(Zoo_.name, "The Big Zoo")
builder.link(Zoo_.animals).equal(Animal_.flying, true)
val flyingAnimals = builder.build().find()
这就叫做"links" and there is documentation,再举一个例子。
https://docs.objectbox.io/queries#add-query-conditions-for-related-entities-links
@Entity
public class Person {
@Id long id;
String name;
ToMany<Address> addresses;
}
@Entity
public class Address {
@Id long id;
String street;
String zip;
}
// get all Person objects named "Elmo"...
QueryBuilder<Person> builder = personBox
.query().equal(Person_.name, "Elmo");
// ...which have an address on "Sesame Street"
builder.link(Person_.addresses).equal(Address_.street, "Sesame Street");
List<Person> elmosOnSesameStreet = builder.build().find();
如何将两个 类 加入 ObjectBox 中,它们具有一二多的关系? 我有两个表如下: @实体
public class Animal {
@Id(assignable = true)
public long id;
private String name;
private boolean flying;
private boolean swimming;
private boolean walking;
private ToOne<Zoo> zoo;
.../*setters and getters*/
}
和:
@Entity
public class Zoo {
@Id
public long id;
private String name;
// a Zoo can have many Animals
@Backlink
ToMany<Animal> animals;
.../*setters and getters*/
}
如何实现Join操作?
从版本 2.0.0
开始,您可以执行以下操作:
val builder = box.query().equal(Zoo_.name, "The Big Zoo")
builder.link(Zoo_.animals).equal(Animal_.flying, true)
val flyingAnimals = builder.build().find()
这就叫做"links" and there is documentation,再举一个例子。
https://docs.objectbox.io/queries#add-query-conditions-for-related-entities-links
@Entity
public class Person {
@Id long id;
String name;
ToMany<Address> addresses;
}
@Entity
public class Address {
@Id long id;
String street;
String zip;
}
// get all Person objects named "Elmo"...
QueryBuilder<Person> builder = personBox
.query().equal(Person_.name, "Elmo");
// ...which have an address on "Sesame Street"
builder.link(Person_.addresses).equal(Address_.street, "Sesame Street");
List<Person> elmosOnSesameStreet = builder.build().find();