hibernate处理视图和处理表情况是一样的,以下是通过springboot和jpa进行的测试
实体:
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
private String name;
private Integer age;
private String address;
/*get和set方法*/
}
@Entity
public class Student {
@Id
@GeneratedValue
private Long id;
private String name;
/*get和set方法*/
}
@Entity//此类为视图类
public class Vps {
@Id//此处必须加id,id可以加到任意字段
private Long pid;
private Long sid;
private String sname;
private Integer age;
/*get和set方法*/
}
注意:视图实体也是必须有id的,id可以加到任意字段,本人在pid,sid,sname,age四个字段上都实验成功
视图建立的sql语句:
select `person`.`id` AS `pid`,`student`.`id` AS `sid`,`student`.`name` AS `sname`,`person`.`age` AS `age` from (`person` join `student`)
dao层:
public interface VpsRepository extends JpaRepository<Vps, Long> {
}
service层:
@Service
public class DemoServiceImpl implements DemoService {
@Autowired
private VpsRepository vpsRepository;
@Transactional(readOnly = true)
@Override
public List<Vps> findAll() {
return vpsRepository.findAll();
}
}
控制层:
@RestController
public class MyController {
@RequestMapping("/vpslist")
public List<Vps> vpslist() {
return demoService.findAll();
}
}
结果:
[ {
"pid" : 1,
"sid" : 1,
"sname" : "s1",
"age" : 1
} ]