我需要用Eclipselink以有序的方式阅读复杂的模型。该订单是曼陀罗的,因为它是一个巨大的数据库,我想在Jface TableView中具有数据库的一小部分输出。尝试将其重新排序在加载/Quering线程中需要太长并在LabelProvider中订购它会阻止UI线程太多时间,因此我认为如果可以使用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

在表视图中,Y轴或多或少使用查询创建

Query q = em.createQuery("SELECT m FROM Thing m ORDER BY m.name ASC");

将来自事物对象的“名称”属性作为标签。

在表视图中,X轴或多或少使用查询创建

Query q = em.createQuery("SELECT m FROM Item m ORDER BY m.name ASC");

将项目对象的“名称”属性作为标签。

每个单元都有值

Things.getProperties().get[x].getValue()

不幸的是,未订购“属性”列表,因此单元格值和X轴列编号(x)的组合不一定正确。因此,我需要以与订购X轴标签相同的方式订购列表“属性”。

这正是我不知道它是如何完成的。因此,查询对象的问题应返回列表“属性”“按名称ASC” “项目”的对象。我的想法就像是与两个连接的查询一样。用财产和物品jo东西,但我无法以某种方式使它上班。

感谢您的帮助和解决这个谜语的想法。

有帮助吗?

解决方案

可能是对这个其他问题的答案可以帮助您:定义列表的顺序

我认为您可能必须使用另一个查询来获取每件事的属性订单列表。

就像是:

SELECT p FROM Property p WHERE p.thing = ?1 ORDER BY p.item.name

其他提示

您使用的是哪个版本的VB.NET版本。您正在使用的数组语法被添加在VS 2010(或可能2008)中添加,并且无法在旧版本上工作。如果是这样的话,那么尝试以下内容

GetTTCFTPini = New Object() { "Nothing" } 
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top