89 lines
2.2 KiB
Java
89 lines
2.2 KiB
Java
package org.baeldung.model;
|
|
|
|
import org.baeldung.annotation.CascadeSave;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.data.annotation.Id;
|
|
import org.springframework.data.annotation.PersistenceConstructor;
|
|
import org.springframework.data.annotation.Transient;
|
|
import org.springframework.data.mongodb.core.index.CompoundIndex;
|
|
import org.springframework.data.mongodb.core.index.CompoundIndexes;
|
|
import org.springframework.data.mongodb.core.index.IndexDirection;
|
|
import org.springframework.data.mongodb.core.index.Indexed;
|
|
import org.springframework.data.mongodb.core.mapping.DBRef;
|
|
import org.springframework.data.mongodb.core.mapping.Document;
|
|
import org.springframework.data.mongodb.core.mapping.Field;
|
|
|
|
import com.mysema.query.annotations.QueryEntity;
|
|
|
|
@QueryEntity
|
|
@Document
|
|
@CompoundIndexes({ @CompoundIndex(name = "email_age", def = "{'email.id' : 1, 'age': 1}") })
|
|
public class User {
|
|
|
|
@Id
|
|
private String id;
|
|
@Indexed(direction = IndexDirection.ASCENDING)
|
|
private String name;
|
|
@Indexed(direction = IndexDirection.ASCENDING)
|
|
private Integer age;
|
|
|
|
@DBRef
|
|
@Field("email")
|
|
@CascadeSave
|
|
private EmailAddress emailAddress;
|
|
|
|
@Transient
|
|
private Integer yearOfBirth;
|
|
|
|
public User() {
|
|
}
|
|
|
|
@PersistenceConstructor
|
|
public User(final String name, @Value("#root.age ?: 0") final Integer age, final EmailAddress emailAddress) {
|
|
this.name = name;
|
|
this.age = age;
|
|
this.emailAddress = emailAddress;
|
|
}
|
|
|
|
public String getId() {
|
|
return id;
|
|
}
|
|
|
|
public void setId(final String id) {
|
|
this.id = id;
|
|
}
|
|
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
|
|
public void setName(final String name) {
|
|
this.name = name;
|
|
}
|
|
|
|
public Integer getAge() {
|
|
return age;
|
|
}
|
|
|
|
public void setAge(final Integer age) {
|
|
this.age = age;
|
|
}
|
|
|
|
public EmailAddress getEmailAddress() {
|
|
return emailAddress;
|
|
}
|
|
|
|
public void setEmailAddress(final EmailAddress emailAddress) {
|
|
this.emailAddress = emailAddress;
|
|
}
|
|
|
|
public Integer getYearOfBirth() {
|
|
return yearOfBirth;
|
|
}
|
|
|
|
public void setYearOfBirth(final Integer yearOfBirth) {
|
|
this.yearOfBirth = yearOfBirth;
|
|
}
|
|
|
|
}
|