2

4.0.1 から hibernate 4.1.7.Final にアップグレードしようとしていますが、次のエラーが発生します。

Failed to start service jboss.persistenceunit."****/********": org.jboss.msc.service.StartException in service jboss.persistenceunit."*****": Failed to start service
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_35]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_35]
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_35] 

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: myatrium_intranet] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:162)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.start(PersistenceUnitServiceImpl.java:85)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
... 3 more
Caused by: org.hibernate.HibernateException: Could not locate table which owns column [id] referenced in order-by mapping
at org.hibernate.persister.entity.JoinedSubclassEntityPersister.determineTableNumberForColumn(JoinedSubclassEntityPersister.java:854)
at org.hibernate.persister.entity.AbstractEntityPersister.getTableAliasForColumn(AbstractEntityPersister.java:4865)
at org.hibernate.persister.collection.AbstractCollectionPersister$StandardOrderByAliasResolver.resolveTableAlias(AbstractCollectionPersister.java:1930)
at org.hibernate.sql.ordering.antlr.OrderByFragmentTranslator$StandardOrderByTranslationImpl.injectAliases(OrderByFragmentTranslator.java:106)
at org.hibernate.persister.collection.AbstractCollectionPersister.getSQLOrderByString(AbstractCollectionPersister.java:751)
at org.hibernate.loader.JoinWalker.orderBy(JoinWalker.java:910)
at org.hibernate.loader.JoinWalker.orderBy(JoinWalker.java:822)
at org.hibernate.loader.AbstractEntityJoinWalker.initStatementString(AbstractEntityJoinWalker.java:123)
at org.hibernate.loader.AbstractEntityJoinWalker.initStatementString(AbstractEntityJoinWalker.java:108)
at org.hibernate.loader.AbstractEntityJoinWalker.initAll(AbstractEntityJoinWalker.java:90)
at org.hibernate.loader.AbstractEntityJoinWalker.initAll(AbstractEntityJoinWalker.java:77)
at org.hibernate.loader.entity.CascadeEntityJoinWalker.<init>(CascadeEntityJoinWalker.java:51)
at org.hibernate.loader.entity.CascadeEntityLoader.<init>(CascadeEntityLoader.java:46)
at org.hibernate.persister.entity.AbstractEntityPersister.createLoaders(AbstractEntityPersister.java:3785)
at org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:3722)
at org.hibernate.persister.entity.SingleTableEntityPersister.postInstantiate(SingleTableEntityPersister.java:1018)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:457)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
... 9 more

どのテーブルの休止状態が話しているのかわかりません。それを知る方法はありますか?また、それを機能させるために特別なものを追加する必要がありますか? 私のデータ構造は4.0.1で機能していたことに注意してください。

どんな助けでも本当に感謝します。

更新:休止状態のデバッグをオンにしましたが、どのクラスが問題を引き起こしているかを調べる方法を知りたいです。どのクラスから来ているかを知る方法はありますか?念のために言っておきますが、エラーは、サーバーを起動する前に hibernate が実行する事前ロード クエリによるものです。

前もって感謝します

4

1 に答える 1

4

これが最終的に発生するシナリオを把握し、すぐに休止状態でバグレポートを提出し、そうするときにここにリンクします. JOINED の継承戦略を使用するエンティティがあり、親エンティティを別のエンティティのコレクションとして参照し、そのコレクションに order by を追加すると、投稿された OP のエラーがスローされます。

例えば:

@Entity
@Table(name = "Joined_Parent")
@Inheritance(strategy = InheritanceType.JOINED)
public class JoinedParent
{
    @Id
    @GeneratedValue
    @Column(name = "id")
    private Integer id;

    @ManyToOne(cascade = {CascadeType.ALL})
    @JoinColumn(name = "other_entity_id", nullable = false)
    private OtherEntity otherEntity;
}

@Entity
@Table(name = "Joined_Child")
@PrimaryKeyJoinColumn(name = "id")
public class JoinedChild
    extends JoinedParent
{
}

@Entity
@Table(name = "Other_Entity")
public class OtherEntity
{
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "otherEntity", orphanRemoval = true)
    @OrderBy("id ASC") // <-- this causes the error
    private List<JoinedParent> items = new ArrayList<JoinedParent>();
}

これが親をコレクションとして参照する場合にのみ発生するのか、それとも子エンティティでも発生するのかはわかりません。また、双方向の関係を持つことがそれと関係があるかどうかもわかりません。ここにバグレポートを提出しましたhttps://hibernate.onjira.com/browse/HHH-7630

于 2012-09-18T23:35:55.090 に答える