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