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();
}
私は何かが恋しいですか?