我正在编写一个java spring应用程序。
在我的应用程序中有两个实体类
......交易对手:
@Entity
@Table(name="Counterparties")
public class Counterparty {
@Id
@Column(name="id")
private int id;
@Column(name="name")
private String name;
//... getters and setters
}
...和交易:
@Entity
@Table(name="Transactions")
public class Transaction {
@Id
@Column(name="id")
private int id;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="counterparty_id", referencedColumnName="id", nullable=false)
private Counterparty counterparty;
@Column(name="market_value", nullable=false)
private Double marketValue;
//... getters and setters
}
应该通过将xml-data读入数据库来填充数据库。
这是一个包含一个交易对手和一个交易的最小xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<DataInput>
<Counterparty id="1" name="Deutsche Bank"/>
<Transaction id="1" counterpartyId="1" marketValue="200.00"/>
</DataInput>
我正在编写一个SAX-Parser来将xml-data读入数据库表。
这是SAXHandler的startElement方法:
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equalsIgnoreCase("Counterparty")) {
Counterparty counterparty = new Counterparty();
int id = Integer.parseInt(attributes.getValue("id"));
counterparty.setId(id);
String name = attributes.getValue("name");
counterparty.setName(name);
addCounterpartyService.saveCounterparty(counterparty);
}
else if (qName.equalsIgnoreCase("Transaction")) {
Transaction transaction = new Transaction();
int id = Integer.parseInt(attributes.getValue("id"));
inputTransaction.setId(id);
int counterpartyId = Integer.parseInt(attributes.getValue("counterpartyId"));
********************************************************************
//the following line of code throws an error:
transaction.setCounterparty(counterpartyId);
********************************************************************
Double marketValue = Double.valueOf(attributes.getValue("marketValue"));
transaction.setMarketValue(marketValue);
addTransactionService.saveTransaction(transaction);
}
}
我理解为什么这一行会抛出错误的原因: 方法
transaction.setCounterparty()
需要一个类型为“Counterparty”的参数,但会得到一个类型为“int”的参数。
但是我该怎么办? xml文件包含属性counterpartyId的整数值。