将存储过程中的java对象作为参数调用

将存储过程中的java对象作为参数调用,java,Java,我想知道是否可以在存储过程调用中传递java对象作为参数。这是我使用存储过程调用的java代码。请帮我找到解决这个问题的办法 public void addPatientInfo(PatientInfo patientInfo) throws SQLException { CallableStatement cst = null; try { logger.info("Enter addPatientInfo"); dbConnection

我想知道是否可以在存储过程调用中传递java对象作为参数。这是我使用存储过程调用的java代码。请帮我找到解决这个问题的办法

public void addPatientInfo(PatientInfo patientInfo) throws SQLException
{   
    CallableStatement cst = null;

    try {
        logger.info("Enter addPatientInfo");
        dbConnection = DbConnectionImpl.getDbConnection(dbConnInfo);
        dbConnection.setAutoCommit(false);
        cst = dbConnection.prepareCall("{ call add_patient(?,?,?,?,?,?,?,?,?,?) }");

        cst.setInt(1, patientInfo.getSalutationType().getSalutationTypeId());
        cst.setString(2, patientInfo.getFirstName());
        cst.setString(3, patientInfo.getMiddleName());
        cst.setString(4, patientInfo.getLastName());
        cst.setString(5, patientInfo.getGender());
        cst.setString(6, patientInfo.getDob());
        cst.setString(7, patientInfo.getOccupation());
        cst.setInt(8, ApplicationConstants.OWNER_TYPE_PATIENT);
        cst.setString(9, patientInfo.getEducation());
        cst.setString(10,patientInfo.getPatientIdentityNo());

        cst.execute();
        dbConnection.commit();
    }

听起来你好像在问你是否能做到这一点:

cst = dbConnection.prepareCall("{ call add_patient(?,?,?,?,?,?,?,?,?,?) }");
cst.setObject(1, patientInfo);
从让准备好的语句知道要为哪些数据库字段分配哪些属性的意义上讲,答案是否定的


不过,PreparedStatement类上实际上有一个setObject()。但它关注的是产生特定输出的特定范围的可接受类。Java bean不在该列表中。

我明白你的意思了

有一种方法,
但为此,您必须将其映射到Java对象。

是否有任何方法可以在add_patient存储过程调用中作为参数传递patientInfo?没有。我想知道我们是否可以传递patientInfo,比如调用add_patient(patientInfo),在那里我可以从数据库中获取所有的参数。这是一种正确的技术吗?或者有什么方法可以做到这一点