0

我创建了一个实体 Bean,它映射了我的 MSSQL Server 2012 的订单表。到目前为止,它工作正常,但我想加入文章视图中的一些列,为所选文章提供更多信息。

该订单由几行组成,其 ID 为 Prime-Key,Article-Nr 为外键。

我试图将带有文章的视图映射到文章实体中,但由于行数(> 10.000),它会减慢一切(但可以正常工作......只是非常慢......也没有其他需要再映射此视图 - 除了 3 行信息)。所以我只想将必要的列加入订单实体。

但我不明白它的工作...

我尝试使用注释“NamedQuery”

@Entity
@NamedNativeQuery(name = "Joinnecessary", 
query = "SELECT Order.PK_ID, Order.FK_OrderID, Order.FK_ArticleNr, Order.Amount,
Article.Description, Article.Price 
FROM Order left outer join Article 
on Order.FK_ArticleNr=Article.PK_ArticleNr",
resultClass = Order.class)

我不确定问题到底出在哪里......我的记录实体有一个订单实体列表并显示它们。

for(orders o: orderlist){

在这一行中,我收到以下错误:

严重:对象名称“订单”无效。线程“主”org.hibernate.exception.SQLGrammarException 中的异常:无法初始化集合:[qohelet.Record.orders#1] at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)

在文献中,我发现了一些有趣的映射 1:1-Relations 的东西。(从这个角度来看,我的关系可以看作是这样的)如果找到 @SecondaryTable-Annotation 这可能是我所有问题的一个很好的解决方案:

@Table(name = "Order")
@SecondaryTable(name = "Article", pkJoinColumns = {
    @PrimaryKeyJoinColumn(name = "PK_ArticleNr", referencedColumnName = "FK_ArticleNr")
})

我加入的其他列是这样的:

@Column(table = "Article")
private String description;

但我猜注解“PrimaryKeyJoinColumn”不是无缘无故地这样命名的......

初始 SessionFactory 创建 failed.org.hibernate.AnnotationException:SecondaryTable JoinColumn 无法引用非主键

线程“主”中的 java.lang.ExceptionInInitializerErrorException

是否有另一个注释具有我想要的效果?还是我使用当前的错误?谢谢!

4

1 回答 1

0

词序是 T-SQL 中的特殊语句-> 使用[ ]

select [order].* 
from [order]
left outer join Article on [order].FK_ArticleNr = Article.PK_ArticleNr
order by price
于 2013-08-13T18:29:22.897 回答