我有一个mysql db(尽管以后也需要针对MSSQL运行),它带有一个存储过程aaaacme_consumables,它带有一个序列号参数。我可以在mysql中按如下方式调用它:
call aa_acme_consumables("12345");
我将返回以下记录:
Serial_No | partID | Qty | Description
12345 | a123 | 10 | Widget One
12345 | b456 | 3 | Widget Two
全面披露:在我的多次尝试中,我可能会混淆不同解决方案的某些部分。这是我到目前为止所拥有的。
我的 @Entity类如下:
@Entity
@Data
public class Consumable implements Serializable {
@Id
@Column(name = "Serial_No")
private String serialNo;
@Column(name = "partID")
private String partID;
@Column(name = "Qty")
private int quantity;
@Column(name = "Description")
private String desc;
}
我的存储库类如下所示”
@Repository
public interface ConsumableRepo extends JpaRepository<Consumable, Integer>, ConsumableRepoCust { }
我的自定义存储库类如下:
public interface ConsumableRepoCust {
public List<Consumable> getAllConsumables(String serialNum);
}
我的存储库实施如下:
public class ConsumableRepoImpl {
@PersistenceContext
EntityManager em;
public List<Consumable> getAllConsumables(String serialNum) throws SQLException {
StoredProcedureQuery query = em.createStoredProcedureQuery("xx_bds_Consumable", Consumable.class);
query.registerStoredProcedureParameter("serialNum", String.class, ParameterMode.IN);
query.setParameter("serialNum", serialNum);
query.execute();
List<Consumable> consumableList = query.getResultList();
for (Consumable c : consumableList ) {
System.out.println("Description : " + c.getDesc() );
}
return consumableList ;
}
}
我希望返回以下内容:
========== ABOUT TO RUN STORED PROC ==========
Hibernate: {call aa_acme_consumables(?)}
Description : Widget One
Description : Widget Two
所以我的问题: **为什么我要退货? **
========== ABOUT TO RUN STORED PROC ==========
Hibernate: {call aa_acme_consumables(?)}
Description : Widget One
Description : Widget One
我希望从第二条记录(窗口小部件2)中获取描述,就像从mysql调用存储的proc一样,但是我两次获得窗口小部件One。这一直困扰着我。