Я пытаюсь сопоставить сущность с существующей таблицей только для чтения. Учетная запись, которую я использую, имеет только привилегии SELECT.
Столбец, которому я сопоставляю свой @ID, уже заполнен. Моя сущность выглядит следующим образом
@Entity
@Table(name = "MYTABLE", schema="MYSCHEMA")
public class PaymentsEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ssn", updatable = false, nullable = false)
private Long ssn;
@Column(name = "amount")
private BigDecimal amount;
@Column(name = "business_date")
private Date businessDate;
@Column(name = "receiver")
private String receiver;
@Column(name = "sender")
private String sender;
// getters and setters
}
Мой репозиторий выглядит следующим образом
@Repository
@Transactional
public interface PaymentsRepository extends JpaRepository<PaymentsEntity, BigInteger> {
@Query(value = "SELECT sender, receiver, amount, business_date FROM MYSCHEMA.MYTABLE WHERE business_date = ?1 ORDER BY Amount ASC",
nativeQuery = true)
public List<PaymentsEntity> findByBusinessDate(Date businessDate);
}
Когда я вызываю метод findByBusinessDate, я получаю следующую ошибку
com.ibm.db2.jcc.am.SqlException: [jcc][10150][10300][4.19.49] Invalid parameter: Unknown column name ssn. ERRORCODE=-4460, SQLSTATE=null
ЕслиЯ изменяю тип поля ssn на BigInteger, я получаю следующую ошибку
org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [ssn] in table [PFA.PAYMENTS]; found [bigint (Types#BIGINT)], but expecting [decimal(19,2) (Types#NUMERIC)]
Итак, столбец на самом деле не известен, и я получаю бесполезное сообщение об ошибке.
IЯ пытался использовать параметр соединения useJDBC4ColumnNameAndLabelSemantics = 2, но он ничего не меняет.
Я использую Hibernate 5.4.6.FINAL, а драйвер IBM DB2 версии 4.19.49. База данных DB2 - это версия 10.5, работающая в AIX.
Любая и вся помощь приветствуется.