如何创建一个数据库存储过程调用,该调用将表作为一个参数发送并作为一个return(out)参数表获取。
我首先将表作为参数发送,并执行以下操作:
@NamedStoredProcedureQuery(name = "testProcedure",
procedureName = "testProcedure",
resultClasses = {Integer.class},
parameters = {
@StoredProcedureParameter(
mode = ParameterMode.IN,
name = "tabela",
type = Tabela.class),
@StoredProcedureParameter(
mode = ParameterMode.OUT,
name = "ilosc",
type = Integer.class)
}
)
public class TestProcedure implements Serializable {
@Id
private Integer id;
}
也尝试这样的事情:
final StoredProcedureQuery testProcedure = entityManager
.createNamedStoredProcedureQuery("testProcedure")
.registerStoredProcedureParameter(0, Object.class, ParameterMode.OUT)
.registerStoredProcedureParameter(1, Object.class, ParameterMode.IN);
List<Tabela> arrayList = new ArrayList<>();
arrayList.add(Tabela.builder().firstName("Dominik").age(11).build());
arrayList.add(Tabela.builder().firstName("Dominik22").age(22).build());
testProcedure.setParameter(1, arrayList);
testProcedure.execute();
但每次我得到&#34; Type不能为null&#34;
我创建了这个表实体,但它不起作用:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "tabela")
public class Tabela {
@Id
@Column(name = "first_name")
private String firstName;
@Column(name = "age")
private Integer age;
}
有什么想法吗?
答案 0 :(得分:0)
可能更容易插入到输入表(可能是全局临时表),然后只执行存储过程,该存储过程可以从该表读取并写入不同的输出表(同样可能是全局临时表)然后你可以在那里查询输出。