是否可以使用过程从数据库MVC样式中获取数据?

时间:2016-02-16 07:26:06

标签: java spring hibernate plsql

抱歉标题错误。

但基本上如果我有两个班,员工和地址。 Employee引用了Address的实例。

Class Employee{
  @Id
  Integer id;

  @Column(name="Name")
  private String name;

  @Column(name="Address")
  private Id addressId;

  @ManyToOne(name="Address", referencedColumnName="ID", insertable=false, updatable=false)
  private Address address;
}

现在使用spring-hibernate, 当我执行"Select * from Employee"之类的操作时,它不仅会获取每个员工记录,还会获取相应的包含地址记录。
多数民众喜欢hibernate呢。我不只是获取地址Id,而是获得员工每个对象的完整地址数据。 所以我可以做一些像employee.getAddress()。getName()

这样的事情

但事情是由于一些奇怪的客户要求,我们被迫只使用我们的代码中的程序来访问数据和程序反过来将调用查询。所以在我们的代码中没有直接查询。 但是通过程序,我们无法利用spring-hibernate的这个特性。

程序是否可以这样做(返回每个员工对象中每个员工的整个数据)??

2 个答案:

答案 0 :(得分:1)

基本上你可以使用RowMapper。您的程序应该返回加入的数据员工和地址。 JdbcTemplate的简单示例:

public List<Employee> getEmployees(){
    final String sql = "CALL employees_procedure";
    final List<Employee> employees = (Employee) jdbcTemplate.queryForList("CALL employees_procedure", new EmployeeRowMapper());

    return employees ;
}

public class EmployeeRowMapper implements RowMapper {
    public Employee mapRow(ResultSet rs, int rowNum) throws SQLException {
        Employee employee= new Employee ();
        employee.set(rs.getString("e.id"));
        ...
        return employee;
    }
}

答案 1 :(得分:-1)