Olá,
estou com uma dúvida, que não tenho idéia se é possível ser feito, mas vamos lá:
Tenho uma classe person (ver código abaixo) que persiste os atributo name e last_name no banco. E tenho um atributo fullName não persistido (Transient) que simplesmente contatena name e last_name. Gostaria de executar uma query no hibernate que fosse feita no atributo fullName, algo do tipo:
select id, fullName from person where fullName like ‘%nome_para_pesquisa%’;
Como fazer neste caso? Usando namedQuerys seria possível?
Obrigado.
@Entity
@NamedQueries(
{
@NamedQuery(
name = "person.findByName",
query = "select p FROM Person p WHERE p.name LIKE :name")
}
)
@Table(name="person")
@Inheritance(strategy = InheritanceType.JOINED)
public class Person implements Serializable {
public Person() {
}
@Id
@SequenceGenerator(name="seqPerson", sequenceName="person_id_seq", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seqPerson")
@Column(name="id")
private int id;
@Column(name="name", nullable=true, length=255)
private String name;
@Column(name="last_name", nullable=true, length=255)
private String last_name;
@Column(name="tax_business_id", nullable=true, length=255)
private String tax_business_id;
@Transient
private String fullName;
// metodos get's and set's ....
public String getFullName() {
if(this.getName()!=null)
fullName = name;
if(this.getLast_name()!=null)
fullName = fullName + " " + this.last_name;
return this.fullName;
}
}