Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA2和Hibernate的问题_Hibernate_Jpa 2.0 - Fatal编程技术网

JPA2和Hibernate的问题

JPA2和Hibernate的问题,hibernate,jpa-2.0,Hibernate,Jpa 2.0,我有一个问题: Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: fb-persistence] Unable to configure EntityManagerFactory at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:378) at org.hiberna

我有一个问题:

 Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: fb-persistence] Unable to configure EntityManagerFactory
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:378)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
    at it.synclab.fb.test.Test.main(Test.java:13)
Caused by: java.lang.ClassCastException: org.hibernate.mapping.UnionSubclass cannot be cast to org.hibernate.mapping.RootClass
    at org.hibernate.cfg.annotations.PropertyBinder.bind(PropertyBinder.java:209)
    at org.hibernate.cfg.annotations.PropertyBinder.makePropertyValueAndBind(PropertyBinder.java:200)
    at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:2061)
    at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:796)
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:707)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:4008)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3962)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1371)
    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1348)
    at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1522)
    at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1100)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:282)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:366)
    ... 4 more
谁能帮我解决?我已经用JPA配置了Hibernate,文件persistence.xml是:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">
    <persistence-unit name="fb-persistence" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>it.synclab.fb.jpa.Plugin</class>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>  
            <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>  
            <property name="hibernate.show_sql" value="true"/> 
            <property name="hibernate.connection.username" value="***"/>  
            <property name="hibernate.connection.password" value="***"/>
            <property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:RAFFAELE"/>
        </properties>
   </persistence-unit>
</persistence>
有什么问题?帮助我?我忘了,我已经用maven2配置了dependenci,文件pom.xml是:

...
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>3.6.3.Final</version>
        </dependency>
       <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.2.0.Final</version>
        </dependency>
...

谢谢

我敢打赌,您的类路径上有多个hibernate jar,这就是它抛出类强制转换异常的原因


另一点看起来是错误的,但可能是正确的,那就是您正在使用JTA事务。如果您不知道JTA是什么意思,请将persistence.xml上的事务类型更改为transaction type=RESOURCE_LOCAL

我在使用从彼此继承的实体bean时经常遇到此错误。尽管它们根据JPA2规范进行了正确的注释,但它们在Hibernate中不起作用。Hibernate JPA2实现中有许多这样的bug。最后,我所做的是通过为鉴别器列@DiscriminatorValueSomeValue添加注释,从JPA2s的视点配置中添加非常具体但不是强制性的,这些列用于连接@PrimaryKeyJoinColumnname=idColumn。从截取的代码来看,您似乎没有使用继承,但如果您确实使用了继承,请尝试


此外,如果您的项目允许,可以将JPA2实现从Hibernate切换到Eclipselink。我经历过无数次,正确的JPA2代码在EclipseLink中运行良好,但在Hibernate中抛出了bizzare异常。

您能显示您正在使用的主类吗?ops借口…在主类中,我称为EntityManagerFactory factory=Persistence.createEntityManagerFactoryfb-Persistence;你确定Plugin是唯一的持久类吗?我只是在测试这个类,但是我有更多的类Entity@giulius:尝试添加到persistence.xml-如果问题消失,则是由其他实体引起的。我已更改persistence.xml上的事务类型,并检查了类路径的库,即使我使用maven解决了依赖关系?不管怎样,问题仍然存在……你有其他想法吗?Maven不会在类路径中放置重复的JAR,但是你可能会导入2个具有不同组或工件ID的hibernate JAR。运行mvn dependency:tree-Dverbose=true并检查maven是否没有在类路径上放置两个版本的Hibernate。似乎maven没有在类路径中放置重复的JAR。我检查了repository.m/、target\classes文件夹和Eclipse构建路径的库。我在正确的地方看到了吗?嗯,我刚刚检查了Hibernate 3.6.2上的类层次结构,我目前使用的版本和RootClass和UnionSubClass没有关联,它们有一个公共的超类,但它们不相互继承。这可能是因为hibernate 3.6.3中有一个可怕的bug,我对此表示怀疑,或者是因为有些库存在冲突。同样,看起来您有一个类路径问题,但是类不兼容。很抱歉,我无法为您提供更多帮助。我检查了eclipse的文件.classpath,没有用于hibernate的重复库。如果你愿意,我可以把文件寄出去吗?谢谢你迄今为止的帮助
...
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>3.6.3.Final</version>
        </dependency>
       <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.2.0.Final</version>
        </dependency>
...