org.hibernate.MappingException: Unknown entity

离墨狂客 2016-09-06 10:53:50
这是个什么问题,困扰一天了,求解决
错误信息:org.hibernate.MappingException: Unknown entity: org.jeecgframework.web.pcadmin.entity.ShareHolder
at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:1141)
at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1433)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:116)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:206)
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:191)
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:764)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:756)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:752)
at org.jeecgframework.core.common.dao.impl.GenericBaseCommonDao.save(GenericBaseCommonDao.java:177)
at org.jeecgframework.core.common.service.impl.CommonServiceImpl.save(CommonServiceImpl.java:58)
at org.jeecgframework.web.pcadmin.service.imp.ShareHolderServiceImpl.insertShareholder(ShareHolderServiceImpl.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)


实体类
package org.jeecgframework.web.pcadmin.entity;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

@Entity
@Table(name = "share_holder", schema = "")
@DynamicUpdate(true)
@DynamicInsert(true)
public class ShareHolder{
/**
* 股东ID
*/
@Column(name = "holder_Id", nullable = false, length = 32)
private Integer holderId;
/**
* 登录名
*/
@Column(name = "holder_Loginname", nullable = true)
private String holderLoginname;
/**
* 股东姓名
*/
@Column(name = "holder_Name", nullable = true)
private String holderName;
/**
* 股东身份证
*/
@Column(name = "holder_Status_Id", nullable = true)
private String holderStatusId;
/**
* 股东联系电话
*/
@Column(name = "holder_Phonenumber", nullable = true)
private String holderPhonenumber;
/**
* 推荐码
*/
@Column(name = "holder_Recommend_Code", nullable = true)
private String holderRecommendCode;
/**
* 状态(1启用 0禁用)
*/
@Column(name = "holder_State", nullable = true)
private Integer holderState;
/**
* 创建时间
*/
@Column(name = "holder_Establish_Date", nullable = true)
private Date holderEstablishDate;
/**
* 是否代表公司
*/
@Column(name = "holder_Representative", nullable = true)
private Integer holderRepresentative;

@Column(name = "holder_Username", nullable = true)
private Integer holderUsername;

@Column(name = "holder_Password", nullable = true)
private Integer holderPassword;

public Integer getHolderUsername() {
return holderUsername;
}

public void setHolderUsername(Integer holderUsername) {
this.holderUsername = holderUsername;
}

public Integer getHolderPassword() {
return holderPassword;
}

public void setHolderPassword(Integer holderPassword) {
this.holderPassword = holderPassword;
}

@Id
public Integer getHolderId() {
return holderId;
}

public void setHolderId(Integer holderId) {
this.holderId = holderId;
}

public String getHolderLoginname() {
return holderLoginname;
}

public void setHolderLoginname(String holderLoginname) {
this.holderLoginname = holderLoginname;
}

public String getHolderName() {
return holderName;
}

public void setHolderName(String holderName) {
this.holderName = holderName;
}

public String getHolderStatusId() {
return holderStatusId;
}

public void setHolderStatusId(String holderStatusId) {
this.holderStatusId = holderStatusId;
}

public String getHolderPhonenumber() {
return holderPhonenumber;
}

public void setHolderPhonenumber(String holderPhonenumber) {
this.holderPhonenumber = holderPhonenumber;
}

public String getHolderRecommendCode() {
return holderRecommendCode;
}

public void setHolderRecommendCode(String holderRecommendCode) {
this.holderRecommendCode = holderRecommendCode;
}

public Integer getHolderState() {
return holderState;
}

public void setHolderState(Integer holderState) {
this.holderState = holderState;
}

public Date getHolderEstablishDate() {
return holderEstablishDate;
}

public void setHolderEstablishDate(Date holderEstablishDate) {
this.holderEstablishDate = holderEstablishDate;
}

public Integer getHolderRepresentative() {
return holderRepresentative;
}

public void setHolderRepresentative(Integer holderRepresentative) {
this.holderRepresentative = holderRepresentative;
}

}
...全文
306 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
离墨狂客 2016-09-07
  • 打赏
  • 举报
回复
引用 10 楼 qq_26508409 的回复:
Spring 2.5.6才有的新特性packagesToScan 你的spring是哪个版本
3.2.9
小灯光环 2016-09-06
  • 打赏
  • 举报
回复
还是这个异常吗?这个我以前都是myeclipse反向工程生成的~ 你生成试试~ 自己写容易出问题~ 要么就按顺序从写一篇,按属性顺序依次get/set,在get方法上加注解,id上是注意是3个注解
  • 打赏
  • 举报
回复
这个说的是不认识这个实体对象,你怎么使用的?
离墨狂客 2016-09-06
  • 打赏
  • 举报
回复
引用 2 楼 wlwlwlwl015 的回复:
还有主键的注解要加在一起,不能分开写的: @Id @GeneratedValue @Column(name = "ydbasedataid", unique = true, nullable = false) public Integer getYdbasedataid() { return this.ydbasedataid; }
package org.jeecgframework.web.pcadmin.entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

@Entity
@Table(name = "share_holder", schema = "")
@DynamicUpdate(true)
@DynamicInsert(true)
public class ShareHolder {
	private Integer holderId;//股东ID
	private String holderLoginname;//登录名
	private String holderName;//股东姓名
	private String holderStatusId;//股东身份证
	private String holderPhonenumber;//股东联系电话
	private String holderRecommendCode;//推荐码
	private Integer holderState;//状态(1启用 0禁用)
	private String holderEstablishDate;//创建时间
	private Integer holderRepresentative;//是否代表公司
	private String holderUsername;
	private String holderPassword;
	private String holderPosition;
	private String holderBonus;
	private String holderMygoal;
	private Integer manageId;
	private String holderMygoalDate;

	@Column(name = "holder_position", nullable = true)
	public String getHolderPosition() {
		return holderPosition;
	}

	public void setHolderPosition(String holderPosition) {
		this.holderPosition = holderPosition;
	}

	@Column(name = "holder_bonus", nullable = true)
	public String getHolderBonus() {
		return holderBonus;
	}

	public void setHolderBonus(String holderBonus) {
		this.holderBonus = holderBonus;
	}

	@Column(name = "holder_mygoal", nullable = true)
	public String getHolderMygoal() {
		return holderMygoal;
	}

	public void setHolderMygoal(String holderMygoal) {
		this.holderMygoal = holderMygoal;
	}

	@Column(name = "manage_id", nullable = true)
	public Integer getManageId() {
		return manageId;
	}

	public void setManageId(Integer manageId) {
		this.manageId = manageId;
	}

	@Column(name = "holder_mygoal_date", nullable = true)
	public String getHolderMygoalDate() {
		return holderMygoalDate;
	}

	public void setHolderMygoalDate(String holderMygoalDate) {
		this.holderMygoalDate = holderMygoalDate;
	}

	public void setHolderEstablishDate(String holderEstablishDate) {
		this.holderEstablishDate = holderEstablishDate;
	}

	@Column(name = "holder_Username", nullable = true)
	public String getHolderUsername() {
		return holderUsername;
	}

	public void setHolderUsername(String holderUsername) {
		this.holderUsername = holderUsername;
	}

	@Column(name = "holder_Password", nullable = true)
	public String getHolderPassword() {
		return holderPassword;
	}

	public void setHolderPassword(String holderPassword) {
		this.holderPassword = holderPassword;
	}

	@Id
	@Column(name = "holder_Id", nullable = false, length = 32)
	public Integer getHolderId() {
		return holderId;
	}

	public void setHolderId(Integer holderId) {
		this.holderId = holderId;
	}

	@Column(name = "holder_login_name", nullable = true)
	public String getHolderLoginname() {
		return holderLoginname;
	}

	public void setHolderLoginname(String holderLoginname) {
		this.holderLoginname = holderLoginname;
	}

	@Column(name = "holder_Name", nullable = true)
	public String getHolderName() {
		return holderName;
	}

	public void setHolderName(String holderName) {
		this.holderName = holderName;
	}

	@Column(name = "holder_Status_Id", nullable = true)
	public String getHolderStatusId() {
		return holderStatusId;
	}

	public void setHolderStatusId(String holderStatusId) {
		this.holderStatusId = holderStatusId;
	}

	@Column(name = "holder_Phone_number", nullable = true)
	public String getHolderPhonenumber() {
		return holderPhonenumber;
	}

	public void setHolderPhonenumber(String holderPhonenumber) {
		this.holderPhonenumber = holderPhonenumber;
	}

	@Column(name = "holder_Recommend_Code", nullable = true)
	public String getHolderRecommendCode() {
		return holderRecommendCode;
	}

	public void setHolderRecommendCode(String holderRecommendCode) {
		this.holderRecommendCode = holderRecommendCode;
	}

	@Column(name = "holder_State", nullable = true)
	public Integer getHolderState() {
		return holderState;
	}

	public void setHolderState(Integer holderState) {
		this.holderState = holderState;
	}

	@Column(name = "holder_Establish_Date", nullable = true)
	public String getHolderEstablishDate() {
		return holderEstablishDate;
	}

	@Column(name = "holder_Representative", nullable = true)
	public Integer getHolderRepresentative() {
		return holderRepresentative;
	}

	public void setHolderRepresentative(Integer holderRepresentative) {
		this.holderRepresentative = holderRepresentative;
	}

}

已经改了 类型也都一一对应 还是不行
小灯光环 2016-09-06
  • 打赏
  • 举报
回复
还有主键的注解要加在一起,不能分开写的: @Id @GeneratedValue @Column(name = "ydbasedataid", unique = true, nullable = false) public Integer getYdbasedataid() { return this.ydbasedataid; }
小灯光环 2016-09-06
  • 打赏
  • 举报
回复
@Column注解要放到每个属性的get方法上~ 很久没用过hibernate了~ 至少在3.x的版本是这样的 @Column(name = "holder_Loginname", nullable = true) public String getHolderLoginname() { return holderLoginname; } public void setHolderLoginname(String holderLoginname) { this.holderLoginname = holderLoginname; }
nikyotensai 2016-09-06
  • 打赏
  • 举报
回复
Spring 2.5.6才有的新特性packagesToScan 你的spring是哪个版本
离墨狂客 2016-09-06
  • 打赏
  • 举报
回复
引用 8 楼 qq_26508409 的回复:
hibernate配置呢
这是我的配置文件
只有一个关于hibernate的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"
default-autowire="byName" default-lazy-init="false">
<!-- 自动扫描dao和service包(自动注入) -->
<context:component-scan base-package="org.jeecgframework.core.common.dao.*" />
<context:component-scan base-package="org.jeecgframework.core.common.service.*" />

<!-- 加载service,此时要排除要controller,因为controller已经spring-mvc中加载过了 -->
<context:component-scan base-package="org.jeecgframework.web.*,weixin.*">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>

<!-- 引入属性文件 -->
<context:property-placeholder location="classpath:dbconfig.properties" />
<!-- 配置数据源1 -->
<bean name="dataSource_jeecg" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="url" value="${jdbc.url.jeecg}" />
<property name="username" value="${jdbc.username.jeecg}" />
<property name="password" value="${jdbc.password.jeecg}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="0" />
<!-- 连接池最大使用连接数量 -->
<property name="maxActive" value="20" />
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="20" />
<!-- 连接池最小空闲 -->
<property name="minIdle" value="5" />
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="60000" />
<!-- <property name="poolPreparedStatements" value="true" /> <property
name="maxPoolPreparedStatementPerConnectionSize" value="33" /> -->
<property name="validationQuery" value="${validationQuery.sqlserver}" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />

<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="25200000" />

<!-- 打开removeAbandoned功能 -->
<property name="removeAbandoned" value="true" />
<!-- 1800秒,也就是30分钟 -->
<property name="removeAbandonedTimeout" value="1800" />
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="true" />

<!-- 开启Druid的监控统计功能 -->
<property name="filters" value="stat" />
<!--<property name="filters" value="mergeStat" /> -->
<!-- Oracle连接是获取字段注释 -->
<property name="connectProperties">
<props>
<prop key="remarksReporting">true</prop>
</props>
</property>
</bean>

<!-- 数据源集合 -->
<bean id="dataSource"
class="org.jeecgframework.core.extend.datasource.DynamicDataSource">
<property name="targetDataSources">
<map key-type="org.jeecgframework.core.extend.datasource.DataSourceType">
<entry key="dataSource_jeecg" value-ref="dataSource_jeecg" />
<!-- <entry key="mapdataSource" value-ref="mapdataSource" /> -->
</map>
</property>
<property name="defaultTargetDataSource" ref="dataSource_jeecg" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="entityInterceptor" ref="hiberAspect" />
<property name="hibernateProperties">
<props>
<!--<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> -->
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
</props>
</property>
<!-- 注解方式配置 -->
<property name="packagesToScan">
<list>
<value>org.jeecgframework.web.system.pojo.*</value>
<value>org.jeecgframework.web.demo.entity.*</value>
<value>org.jeecgframework.web.test.entity.*</value>
<value>org.jeecgframework.web.cgform.entity.*</value>
<value>org.jeecgframework.web.cgreport.entity.*</value>
<value>org.jeecgframework.web.rest.*</value>
<value>weixin.*</value>
<value>org.jeecgframework.web.pcadmin.entity.*</value>
</list>
</property>
</bean>

<!-- JDBC配置 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>

<!-- JDBC配置 -->
<bean id="namedParameterJdbcTemplate"
class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="dataSource" />
</bean>

<!-- 配置事物管理器,在*ServiceImpl里写@Transactional就可以启用事物管理 -->
<bean name="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />

<!-- JSR303 Validator定义 -->
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
</beans>
nikyotensai 2016-09-06
  • 打赏
  • 举报
回复
hibernate配置呢
离墨狂客 2016-09-06
  • 打赏
  • 举报
回复
引用 4 楼 fangmingshijie 的回复:
这个说的是不认识这个实体对象,你怎么使用的?
用entity注解的实体类,用的是minidao查询的话没问题,增删改的时候会出错,但是如果执行新增还会报一句'保存实体对象失败'
离墨狂客 2016-09-06
  • 打赏
  • 举报
回复
引用 5 楼 wlwlwlwl015 的回复:
还是这个异常吗?这个我以前都是myeclipse反向工程生成的~ 你生成试试~ 自己写容易出问题~ 要么就按顺序从写一篇,按属性顺序依次get/set,在get方法上加注解,id上是注意是3个注解
按你的方法做了 还是不行

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧