Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister

Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
	at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:123)
	at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77)
	at org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:181)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:294)
	at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:462)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
	at cn.itcast.uitls.HibernateUtils.<clinit>(HibernateUtils.java:17)
Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
	at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:91)
	at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:116)
	at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:382)
	at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:552)
	at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:124)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96)
	... 7 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:88)
	... 16 more
Caused by: org.hibernate.PropertyNotFoundException: Could not locate getter method for property [cn.itcast.entity.Customer#setContacts]
	at org.hibernate.internal.util.ReflectHelper.findGetterMethod(ReflectHelper.java:437)
	at org.hibernate.property.access.internal.PropertyAccessBasicImpl.<init>(PropertyAccessBasicImpl.java:41)
	at org.hibernate.property.access.internal.PropertyAccessStrategyBasicImpl.buildPropertyAccess(PropertyAccessStrategyBasicImpl.java:27)
	at org.hibernate.mapping.Property.getGetter(Property.java:308)
	at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEntityTuplizer.java:254)
	at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:144)
	at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:58)
	... 21 more

实体类配置表配置的有问题。

修改之前的代码:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
    
<hibernate-mapping>
	<!-- 配置类和表对应 -->
    <class name="cn.itcast.entity.Customer" table="customer">
    	<!-- 配置实体类id和表id对应
    	hibernate要求实体类有一个属性唯一值
    	hibernate要求表字段作为唯一值
    	 -->
    	 <!-- 
    	 	id标签
    	 	name:实体类id属性名
    	 	column:生成的表字段名称
    	  -->
        <id name="cid" column="cid">
        
        	<!-- 设置数据库表id增长策略
        		native:生成表id值就是主键自动增长
        	 -->
            <generator class="native"></generator>
        </id>
        <property name="custName" column="custName"></property>
        <property name="custLevel" column="custLevel"></property>
        <property name="custSource" column="custSource"></property>
        <property name="custPhone" column="custPhone"></property>
        <property name="custMobile" column="custMobile"></property>
        
        <!-- 在客户映射文件中表示所以联系人
        	使用set标签表示所以联系人
        	set标签里的name属性
        	属性值写在客户实体类里面表示联系人的set集合名称
         -->
        <set name="setContacts" cascade="save-update">
        	<!-- 一对多建表,有外键
        		hibernate机制,双向维护外键,在一和多那一方都配置外键
        		column属性值:外键名称
        	 -->
        	<key column="clid"></key>
        	<!-- 客户所有的联系人,class里面写联系人实体类全路径 -->
        	<one-to-many class="cn.itcast.entity.Contact"/>
        </set>
        
    </class>
</hibernate-mapping>

其中的<set name="setContacts" cascade="save-update">

name应该是contacts,由于我复制的时候不细心把set方法名给粘过来了。所以修改称:

<set name="contacts" cascade="save-update">

就ok了,

事实证明还是要细心呀,就这我检查了好几遍,愣是没看出来哪配置错了,?。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值