Hibernate與Jackson

當有一對多,多對一等關聯關係時,用Hibernate查詢並以Jackson轉成Json


比如持久化類User

public class User implements java.io.Serializable{
    private string id;
    private Set<Usertorole> usertoroles=new HashSet<Usertorole>(0);
    //getter setter...
}


其Hibernate配置文件User.hbm.xml

<id name="id" type="java.lang.String">
    <column name="ID" length="10"/>
    <generator class="assigned"></generator>
</id>
<set name="usertoroles" table="USERTOROLE" inverse="true" lazy="false" fetch="select">
    <key>
        <column name="ID"/>
    </key>
    <one-to-many class="com.xxx.entity.Usertorole"/>
</set>


以及持久化類Usertorole

public class Usertorole implements java.io.Serializable{
    private string id;
    private User user;
    //getter setter...
}


由User.hbm.xml可知,User類通過一對多與Usertorole類關聯,而爲了能取到Usertorole集合的值,還設置了

lazy="false"

運行時報錯,死循環,等待很長時間才溢出停掉。


這時Jackson的註解就要發揮作用了。


在Usertorole類的User屬性之上加上註解@JsonBackReference

public class Usertorole implements java.io.Serializable{
    private string id;
    @JsonBackReference
    private User user;
    //getter setter...
}

再運行就OK了。這是爲了防止這種無限循環。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章