关于spirngMVC实体多对一转换json的解决方案

@Entity  
@DynamicInsert
@DynamicUpdate
@Table(name = "nav")   
public class Nav implements Serializable {   
    private static final long serialVersionUID = 1L;   
    @Id  
    @Basic(optional = false)   
    @GeneratedValue(strategy = GenerationType.IDENTITY)   
    @Column(name = "id", nullable = false)   
    private Integer id;   
    @Column(name = "name")   
    private String lbmc;//类别名称   
    @Column(name = "namepy")   
    private String lbmcPy;//类别名称   
    @Column(name = "sl")   
    private int sl;//数量
    @Column(name = "flag")   
    private int flag;//标识判断是否有子list
    
    @Column(name = "order_id")   
    private int order_id;//级别排序
    @Column(name = "level")   
    private int level;//级别
   
    
    
    
    @ManyToOne(cascade={CascadeType.ALL},fetch=FetchType.LAZY)  //多对一的关联FetchType.LAZY(懒加载)a) 只有真正获取数据时才发出SQL语句
    /**(定义列名) @JoinColumn与@Column相区别的是:@JoinColumn注释的是保存表与表之间关系的字段,它要标注在实体属性上。而 @Column标注的是表中不包含表关系的字段。*/
    @JoinColumn(name="parent_id")//这是自关联的pid列名设置
    @JsonIgnore
  //多对一,@JoinColumn与@column类似,指定映射的数据库字段
     private Nav parent;//父id
    
	@OneToMany(targetEntity = Nav.class,cascade={CascadeType.ALL}, mappedBy="parent",fetch = FetchType.LAZY)//一对多,mappedBy="parent"表示由parent主导(即在parent端有值)
    @OrderBy("order_id") 
	@JsonIgnore
    private List<Nav> childrens=new ArrayList<Nav>();		
}  



因为再把实体转换成json时,是无法把实体和集合也转换为实体 所以可以采用@JsonIgnore这个标签来解决

这个标签的作用是:@JsonIgnore 过滤不需要转成json的属性


使用这个标签需要下载:jackson-databind.jar

jackson-annotations.jar

jackson-core.jar



你可能感兴趣的:(json)