我创建了一个实体 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
是否有另一个注释具有我想要的效果?还是我使用当前的错误?谢谢!