我想通过在 Oracle 中创建的存储过程将数据插入实体。存储过程不是一个非常复杂的过程。当我尝试正常插入数据时,它可以工作。但是当我使用@SQLInsert 调用存储过程时,它给了我这样的错误:
java.sql.BatchUpdateException: ora-01858 a non-numeric character was found where a numeric was expected
由于这个错误,日期参数似乎有问题。但是如果由于日期参数出现问题,为什么我可以正常插入数据。
那是实体;
@Entity
@Table(name="TBL_USER")
@XmlRootElement
@SQLInsert(
sql="call PROC_ADD_USER(:P_ID,:P_USER_NAME,:P_PASSWORD,:P_NAME,:P_SURNAME,:P_LOGIN_DATE)",
callable=true)
public class User implements Serializable{
private static final long serialVersionUID = 1L;
@Id
//@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="USER_ID")
private String userId;
@Column(name="USER_NAME")
private String userName;
@Column(name="PASSWORD")
private String password;
@Column(name="NAME")
private String name;
@Column(name="SURNAME")
private String surname;
@Column(name="LOGIN_DATE")
@Temporal(javax.persistence.TemporalType.DATE)
private Date loginDate;
这是保存用户的代码:
Session session =((EntityManagerImpl) entityManager.getDelegate()).getSession();
User user=new User();
user.setUserId(1);
user.setUserName("user name1");
user.setPassword("password1");
user.setName("name1");
user.setSurname("surname 1");
java.util.Date utilDate = new java.util.Date();
user.setLoginDate(utilDate);
Transaction transaction = null;
try {
transaction = session.beginTransaction();
session.save(user);
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
} finally {
//session.close();
}
我错过了什么吗?