json序列化时报错:org.hibernate.MappingException: org.hibernate.dialect.Oracle9Dialect 实体类:package com.renhe.user.po;import java.util.Date;
import java.util.HashSet;
import java.util.Set;import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;/**
 * 组织架构
 * @author doonly
 * @version 创建时间:Dec 7, 2010  2:30:02 PM
 */
@Entity
@Table(name="pc_Organization")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Organization {
public static final String COMPAY_YD="药都药业";
public static final String COMPAY_ZF="仁和中方";
public static final String COMPAY_RH="仁和药业";
public static final String COMPAY_SW="商业委员会";

public static final Long ORGID_SW=1L;
public static final Long ORGID_RH=10L;
public static final Long ORGID_ZF=51L;
public static final Long ORGID_YD=89L;

public static final int TYPE_REGION=0;//销售区域
public static final int TYPE_DEPT=1;//省区部门

public static final int REGION_NOLEVEL=0;//无级别
public static final int REGION_PROVINCE=1;//省级
public static final int REGION_CITY=2;//市级
public static final int REGION_TOWN=3;//县级

public static final int STATUS_ON=1;//启用
public static final int STATUS_OFF=0;//禁用
private Long orgId;//机构ID
private String orgCode;//机构编码
private String simpleName;//简称
private String fullName;//全称
private int orderNum=Integer.MAX_VALUE;//排序
private String re;//备注
private Integer orgType=TYPE_REGION;//机构类型
private Organization parent;//上级机构
private Set<Organization>children=new HashSet<Organization>();//下级机构
private User principal;//直接负责人
private User leader;//分管领导
private Integer regionType =REGION_NOLEVEL;//区域类型 默认无级别
private User creater;
private Date createDate;
private User updater;
private Date updateDate;
private String permissionCode;//权限
private Integer status=STATUS_ON;//状态1为启用,0为禁用
@Id
@SequenceGenerator(sequenceName="seq_Organization", name = "seq_Organization",allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_Organization")
public Long getOrgId() {
return orgId;
}
public void setOrgId(Long orgId) {
this.orgId = orgId;

public String getOrgCode() {
return orgCode;
}
public void setOrgCode(String orgCode) {
this.orgCode = orgCode;
}
public String getSimpleName() {
return simpleName;
}
public void setSimpleName(String simpleName) {
this.simpleName = simpleName;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public int getOrderNum() {
return orderNum;
}
public void setOrderNum(int orderNum) {
this.orderNum = orderNum;
}
public String getRe() {
return re;
}
public void setRe(String re) {
this.re = re;
}

public Integer getOrgType() {
return orgType;
}
public void setOrgType(Integer orgType) {
this.orgType = orgType;
}
@JsonInclude(Include.NON_NULL)
@ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="parent_id")
public Organization getParent() {
return parent;
}
public void setParent(Organization parent) {
this.parent = parent;
}
@JsonInclude(Include.NON_NULL)
@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.REMOVE,mappedBy="parent") @OrderBy("orgId")
public Set<Organization> getChildren() {
return children;
}
public void setChildren(Set<Organization> children) {
this.children = children;
}
@JsonInclude(Include.NON_NULL)
@ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="principal_id")
public User getPrincipal() {
return principal;
}
public void setPrincipal(User principal) {
this.principal = principal;
}
@JsonInclude(Include.NON_NULL)
@ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="leader_id")
public User getLeader() {
return leader;
}
public void setLeader(User leader) {
this.leader = leader;
}
@Transient
public int getChildrenNum() {
return children.size();
}
@JsonInclude(Include.NON_NULL)
@ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="creater_id")
public User getCreater() {
return creater;
}
public void setCreater(User creater) {
this.creater = creater;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
@JsonInclude(Include.NON_NULL)
@ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="updater_id")
public User getUpdater() {
return updater;
}
public void setUpdater(User updater) {
this.updater = updater;
}
public Date getUpdateDate() {
return updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
public Integer getRegionType() {
return regionType;
}
public void setRegionType(Integer regionType) {
this.regionType = regionType;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((orgId == null) ? 0 : orgId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final Organization other = (Organization) obj;
if (orgId == null) {
if (other.orgId != null)
return false;
} else if (!orgId.equals(other.orgId))
return false;
return true;
}
public String getPermissionCode() {
return permissionCode;
}
public void setPermissionCode(String permissionCode) {
this.permissionCode = permissionCode;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}

}持久层代码public List<Organization> orgList(Organization org) {
String seaHql = " where 1>0 ";
if(org != null) {
if(org.getParent() != null) {
if(StringUtils.isNotEmpty(org.getParent().getFullName())) {
seaHql += " and o.parent.fullName like '%" + org.getParent().getFullName().trim() + "%'";
}
}
if(StringUtils.isNotEmpty(org.getFullName())) {
seaHql += " and o.fullName like '%" + org.getFullName().trim() + "%'";
}
}
String hql = "select distinct o From Organization o left join fetch o.children " +
"left join fetch o.parent " + seaHql + " order by o.orderNum";
return findByHql(hql);
}视图层代码:public void printList(List list,String page,String rows,HttpServletResponse res) {
int totalPages;  //总页数  
        int pageSize = StringUtils.isEmpty(rows) ? 10 : Integer.valueOf(rows);  //每页显示记录数  
        int records = list.size();//总记录数
        if(pageSize == 0) {
         pageSize = records;
        }
        int currPage = StringUtils.isEmpty(page) ? 1 : Integer.valueOf(page); //当前页码 
totalPages = (int)Math.ceil((double)records/(double)pageSize);
Map<String,Object> map = new HashMap<String,Object>();
map.put("page", page);//当前页码
map.put("records", records);//总记录数
map.put("total", totalPages);//总页数
int start = (currPage-1) * pageSize;
int end = currPage * pageSize;
if(currPage == totalPages) {
end = records;
}
map.put("list", list.subList(start,end));
res.setContentType("text/plain;charset=UTF-8");
PrintWriter out = null;
try {
out = res.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
out.print(JSON.toJSONString(map));//断点走到这里报错的
}
困扰好久了,就大神解救,万分感谢

解决方案 »

  1.   

    用hql是会报错,换成sql时就不会报错了
      

  2.   

    这是具体抛得异常org.hibernate.MappingException: org.hibernate.dialect.Oracle9Dialect does not support identity key generation
    at org.hibernate.dialect.Dialect.getIdentitySelectString(Dialect.java:534)
    at org.hibernate.dialect.Dialect.getIdentitySelectString(Dialect.java:523)
    at org.hibernate.persister.entity.AbstractEntityPersister.getIdentitySelectString(AbstractEntityPersister.java:2351)
    at Serializer_14.write1(Unknown Source)
    at Serializer_14.write(Unknown Source)
    at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:145)
    at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:322)
    at Serializer_13.write1(Unknown Source)
    at Serializer_13.write(Unknown Source)
    at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:322)
    at Serializer_11.write1(Unknown Source)
    at Serializer_11.write(Unknown Source)
    at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:322)
    at Serializer_3.write1(Unknown Source)
    at Serializer_3.write(Unknown Source)
    at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:322)
    at Serializer_2.write1(Unknown Source)
    at Serializer_2.write(Unknown Source)
    at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:322)
    at Serializer_1.write1(Unknown Source)
    at Serializer_1.write(Unknown Source)
    at com.alibaba.fastjson.serializer.CollectionSerializer.write(CollectionSerializer.java:96)
    at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:322)
    at Serializer_1.write1(Unknown Source)
    at Serializer_1.write(Unknown Source)
    at com.alibaba.fastjson.serializer.CollectionSerializer.write(CollectionSerializer.java:96)
    at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:322)
    at Serializer_1.write1(Unknown Source)
    at Serializer_1.write(Unknown Source)
    at com.alibaba.fastjson.serializer.CollectionSerializer.write(CollectionSerializer.java:96)
    at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:322)
    at Serializer_1.write1(Unknown Source)
    at Serializer_1.write(Unknown Source)
    at com.alibaba.fastjson.serializer.ListSerializer.write(ListSerializer.java:126)
    at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:145)
    at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:301)
    at com.alibaba.fastjson.JSON.toJSONString(JSON.java:339)
    at com.alibaba.fastjson.JSON.toJSONString(JSON.java:327)
    at com.renhe.base.controller.BaseController.printList(BaseController.java:280)
    at com.renhe.user.controller.UserController.orgList(UserController.java:310)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:233)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
    at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
    at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:109)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.ecside.filter.ECSideFilter.doFilter(ECSideFilter.java:188)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.renhe.util.MainFilter.doFilter(MainFilter.java:43)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:610)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:503)

      

  3.   

    你把你第一行复制百度下应该有结果的
    跟json序列化应该无关
    https://stackoverflow.com/questions/24009042/org-hibernate-dialect-oracledialect-does-not-support-identity-key-generation
      

  4.   

    not support identity key generation
    你应该是用的自增ID吧,这个是不支持。百度下解决方法就好了~