Retrieving data from a resultset with two or more same column names. [message #1007904] |
Fri, 08 February 2013 00:52  |
Eclipse User |
|
|
|
@Entity
public T1{
@Id
@Column(name="id")
int id;
@Column(name="name")
String name;
@JoinColumn(name = "parentId")
@OneToOne()
T1 parentT1;
}
The generated sql:
SELECT t1.id, t1.name, t0.id, t0.name FROM T1 t0, T1 t1 WHERE (t0.id = t1.parentDiv)
returns the correct data,
for exapmle
t1.id=1 t1.name=name1 t0.id=0 t0.name=name0
but the object of T1 has next values id=parentT1.id=1 and name=parentT1.name=name1.
|
|
|
|
Re: Retrieving data from a resultset with two or more same column names. [message #1007961 is a reply to message #1007952] |
Fri, 08 February 2013 08:57  |
Eclipse User |
|
|
|
I'm sorry that did not wrote a complete example.
This example gives an incorrect result if I uncomment //cq.multiselect(select);
Eclipselink 2.3.0 and 2.4.1
@Entity
public class T1{
@Id
@Column(name = "id")
public String id;
@Column(name = "NAME")
public String name;
@JoinColumn(name = "PARENT_id")
@OneToOne(fetch = FetchType.EAGER)
public T1 parentT1;
}
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<?> cq = cb.createQuery(T1.class);
Root<?> root = cq.from(T1.class);
Selection<?>[] select = new Selection[]{root.get("id"),root.get("name"),root.get("parentT1").get("id"),root.get("parentT1").get("name")};
//cq.multiselect(select); <----- ok if comment
Query query = em.createQuery(cq);
((org.eclipse.persistence.jpa.JpaQuery<?>)query).getDatabaseQuery().dontMaintainCache();
List<T1> listT1=query.getResultList();
for (T1 t12 : listT1) {
System.out.println(t12.id+" "+t12.name+" "+t12.parentT1.id+" "+t12.parentT1.name);
}
[Updated on: Fri, 08 February 2013 08:59] by Moderator
|
|
|
Powered by
FUDForum. Page generated in 0.03773 seconds