1

我想通过在 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();
        }

我错过了什么吗?

4

0 回答 0