【发布时间】:2017-06-12 02:00:34
【问题描述】:
如何创建一个数据库存储过程调用,它将一个表作为一个参数发送并作为一个返回(输出)参数表获取。
我从发送表作为参数开始,然后执行以下操作:
@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();
但每次我得到“类型不能为空”
我制作了这个表格实体,但它不起作用:
@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;
}
有什么想法吗?
【问题讨论】:
标签: java sql-server spring hibernate spring-boot