繁体   English   中英

休眠onetomany多音问题

[英]Hibernate onetomany manytoone issue

我正在使用休眠作为ORM。 我有两个实体ShopTypeShop TypeShop可能有一些商店。

@Entity
@Table(name = "shop_types")
public class TypeShop {
    ...
    @OneToMany(fetch = FetchType.EAGER, mappedBy="typeShop", cascade = CascadeType.ALL)
    private Set<Shop> shops;
    ...
}

@Entity
@Table(name = "shops")
public class Shop {
    ...
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name = "shop_type_id")
    private TypeShop typeShop;
    ...
}

当我想通过json格式的TypeShop id查找所有shops ,我得到如下信息:

[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First .....

列表一次又一次地继续下去。 如您所见,由于获取类型为EAGER我得到了无限的json格式。 我曾尝试将EAGER更改为LAZY但出现“failed to lazily initialize a collection of role” exception

我怎么解决这个问题? 提前致谢!

编辑:如果我从Shop实体中删除TypeShop吸气剂,则有帮助。 但是我很好奇是否有更好的方法。

这称为JSON双向引用问题。 引用: http ://wiki.fasterxml.com/JacksonFeatureBiDirReferences

检查@JsonIdentityInfo和@ JsonBackReference / @ JsonManagedReference

用注释您的实体

@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")

应该可以解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM