这是我在堆栈上的第一个问题,所以请保持温和: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) 我和@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)
问题是当我FabricRoll按JpaRepository功能完成时
找到所有()
同事FabricDefect也被加载.
我只想加载,FabricRoll并FabricDefect应在调用函数时加载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)