spring-jpa with hibernate和mysql 5.7(依赖于spring platform-bom-1.1.4.RELEASE)
实体类:
@Entity
@Table(name = "activity")
public class ActivityEntity
{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
// optional
@Column(name="project_id")
private Integer projectId;
@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name="container_id")
private ActivityEntity container;
@OneToMany(mappedBy="container", cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
@OrderColumn(name="order")
private List<ActivityEntity> activities;
private String name;
private String description;
...
}
DAO课程:
public interface IActivityDao extends JpaRepository<ActivityEntity, Integer>
{
List<ActivityEntity> findByContainerId(int containerId);
}
数据库表:
CREATE TABLE `activity` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_id` bigint(20) DEFAULT NULL,
`container_id` bigint(20) DEFAULT NULL,
`name` varchar(128) NOT NULL,
`description` varchar(256) DEFAULT NULL,
`type` varchar(32) NOT NULL,
`mode` varchar(32) NOT NULL,
`tag` varchar(32) DEFAULT NULL,
`script` longtext,
`order` int(11) DEFAULT '1',
`created_user_id` varchar(45) DEFAULT NULL,
`created_date` datetime DEFAULT NULL,
`updated_user_id` varchar(45) DEFAULT NULL,
`updated_date` datetime DEFAULT NULL,
`projectId` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `container_id` (`container_id`),
CONSTRAINT `fk_container_id` FOREIGN KEY (`container_id`) REFERENCES `activity` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=214 DEFAULT CHARSET=utf8;
单元测试代码:
public class ActivityDaoTest extends AbstractDaoTest
{
@Resource
private IActivityDao activityDao;
@Test
public void testFindOne() throws Exception {
ActivityEntity activity = activityDao.findOne(210);
ActivityEntity root = activity.getContainer();
int level = 0;
printActivity(activity, level);
Assert.assertNotNull(activity);
if (root != null) {
level = 0;
printActivity(root, level);
}
}
...
}
在上面的测试代码中,root.getActivities()和activity.getActivities()分别返回5和4个项目,第一个项目为null。
我是否想念实体中的某些内容?谢谢你的帮助。
答案 0 :(得分:0)
我会回答我的问题(过早发布):
这解决了我的问题。