Eclipselink: создание объектов из запроса JOIN - PullRequest
0 голосов
/ 05 апреля 2010

У меня SQL-запрос

SELECT * FROM Thing AS a JOIN Thing_Property AS b ON a.id=b.Thing_ID 
   JOIN Property AS c ON b.properties_ID = c.id 
   JOIN Item AS d ON c.item_ID = d.id 
   ORDER BY a.name, d.name 

и я Eclipselink, чтобы создать мою объектную модель с ним. Вот модель:

@SuppressWarnings("serial")
@Entity
public class Thing implements Serializable {
     @Id
     @GeneratedValue(strategy = GenerationType.TABLE)
     private int id;
     private String name;
     @OneToMany(cascade=CascadeType.ALL)
     @PrivateOwned
     private List<Property> properties = new ArrayList<Property>();
     ...
     // getter and setter following here
}
public class Property implements Serializable { 
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    private int id;

    @OneToOne
    private Item item;

     private String value;
     ...
     // getter and setter following here
}
public class Item implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    private int id;
    private String name;
     ....
     // getter and setter following here    
}
// Code end

но я не могу понять, как заставить Eclipselink создать модель из этого запроса. Вы можете помочь?

1 Ответ

2 голосов
/ 05 апреля 2010

Вам нужно будет использовать API EntityManager.createNativeQuery (String sqlString, Class resultClass);

entityManager.createNativeQuery ("ВЫБРАТЬ * ИЗ ВЕЩИ КАК СОЕДИНЯЕТСЯ Свойство Thing_Property AS b ON a.id = b.Thing_ID JOIN Свойство AS c ON b.properties_ID = c.id JOIN Элемент AS d ON c.item_ID = d.id ЗАКАЗАТЬ по a.name, d.name ", Thing.class);

...