【发布时间】:2013-07-19 00:41:38
【问题描述】:
我创建了一个实体 Bean,它映射了我的 MSSQL Server 2012 的订单表。 到目前为止它工作正常,但我想加入文章视图中的一些列,为所选文章提供更多信息。
订单由几行组成,其 ID 为 Prime-Key,Article-Nr 为 Foreign-Key。
我试图将带有文章的视图映射到文章实体中,但由于行数 (>10.000),它会减慢所有速度(但可以正常工作......只是慢得令人难以置信......也没有其他需要映射此视图 - 除了 3 行信息)。所以我只想将必要的列加入 Order-Entity。
但我没有让它工作......
我尝试使用注释“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] 在 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 不能引用非主键
线程“main”中的java.lang.ExceptionInInitializerErrorException
是否有另一个注释具有我想要的效果?还是我使用当前的错误? 谢谢!
【问题讨论】:
标签: java hibernate annotations jointable sql-server-2012-express