相关疑难解决方法(0)

Hibernate OneToMany java.lang.StackOverflowError

这是我在堆栈上的第一个问题,所以请保持温和:D

我正在尝试创建hibernate OneToMany关系.当我尝试从我的数据库中获取一些数据时,我得到了StackOverflowError.但是当我删除OneToMany部分时,一切正常.这是我的REST服务的一部分,现在它运行在VMware vFabric Server和MySQL DB上.

获取示例:

@Inject
private EntityManager entityManager;
...
entityManager.find(League.class, 1);
...
entityManager.find(Team.class, 1);
Run Code Online (Sandbox Code Playgroud)

MySQL脚本:

CREATE TABLE league (
    id int(11) NOT NULL AUTO_INCREMENT,
    name varchar(20) COLLATE utf8_unicode_ci NOT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE team (
    team_id int(11) NOT NULL AUTO_INCREMENT,
    name varchar(20) COLLATE utf8_unicode_ci NOT NULL,
    fk_leagueId int(11) NOT NULL,
    PRIMARY KEY (team_id),
    FOREIGN KEY (fk_leagueId) REFERENCES league(id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

类别:

@XmlRootElement
@Entity
@Table(name = "team")
@Data …
Run Code Online (Sandbox Code Playgroud)

java stack-overflow hibernate one-to-many

34
推荐指数
6
解决办法
3万
查看次数

Spring Data,JPA @OneToMany Lazy fetch在Spring Boot中不起作用

我和@OneToMany之间有关系.FabricRollFabricDefect

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "fabric_roll_id", referencedColumnName = "fabric_roll_id")
private Set<FabricDefect> fabricDefects = new HashSet<>();
Run Code Online (Sandbox Code Playgroud)

问题是当我FabricRollJpaRepository功能完成时

找到所有()

同事FabricDefect也被加载.

我只想加载,FabricRollFabricDefect应在调用函数时加载getFabricDefect()

FabricRollServiceImpl类

@Component
public class FabricRollServiceImpl implements IFabricRollService{
    @Autowired
    FabricRollRepository fabricRollRepository;

    @Transactional(propagation = Propagation.REQUIRED)
    @Override
    public List<FabricRoll> getAllFabricRoll() {
        FabricRoll fabricRoll1 = new FabricRoll();
        fabricRoll1.setBatchNo("34344");
        fabricRoll1.setLotNo("425");
        fabricRoll1.setPoNo("42");
        fabricRoll1.setRollLength(2343);
        fabricRoll1.setRollNo("356");
        fabricRoll1.setRollWidth(60);
        fabricRoll1.setStyleNo("354");

        FabricDefect fabricDefect = new FabricDefect();
        fabricDefect.setDefectNote("note");
        fabricDefect.setDefectPoint(3);
        fabricDefect.setSegment(3);
        fabricDefect.setYard(42);


        Set<FabricDefect> fabricDefects = …
Run Code Online (Sandbox Code Playgroud)

spring hibernate lazy-loading spring-data-jpa

10
推荐指数
1
解决办法
8430
查看次数