0
Я хотел знать, почему у меня разные результаты запроса hibernait и sql? У меня неправильное сопоставление? Java спящий режим не исключение. В этом случае я использую базу данных Oracle 11 и hibernate 3.5.Hibernate возвращает нулевые результаты, но родной sql возвращает разные
У меня есть следующий гибернации объект:
@Table(name = "pat_otb_registry")
public class OtbEntity implements Comparable<OtbEntity> {
@Column(name = "legal_address_region")
private BigDecimal legalAddressRegion;
@Column(name = "declarant")
private String declarant;
@Column(name = "registry_cert_number")
private String registryCertNumber;
@Column(name = "decision_to_grant_date")
private Date decisionToGrantDate;
@Column(name = "competent_authority")
private BigDecimal competentAuthority;
@Column(name = "expiry_date")
private Date expiryDate;
@Column(name = "decision_to_grant_number")
private String decisionToGrantNumber;
@Column(name = "decision_to_cancel_number")
private String decisionToCancelNumber;
@Column(name = "decision_to_exclude_number")
private String decisionToExcludeNumber;
@Column(name = "certification_authority")
private String certificationAuthority;
@Column(name = "appraisee")
private String appraisee;
@Column(name = "date_of_end_stage")
private Date dateOfEndStage;
@Column(name = "certification_field")
private String certificationField;
@Column(name = "validity_years")
private BigDecimal validityYears;
@Column(name = "decision_to_extend_number")
private String decisionToExtendNumber;
@Column(name = "issue_date")
private Date issueDate;
@Column(name = "reason")
private String reason;
@Column(name = "decision_to_cancel_date")
private Date decisionToCancelDate;
@Column(name = "decision_to_exclude_date")
private Date decisionToExcludeDate;
@Column(name = "decision_to_extend_date")
private Date decisionToExtendDate;
@Column(name = "extended_to_date")
private Date extendedToDate;
@Column(name = "oa_registry_number")
private String oaRegistryNumber;
@Column(name = "grounds_for_issue")
private String groundsForIssue;
@Column(name = "doc_num")
private String docNum;
// then getters and setters....
}
таблицы SQL:
CREATE TABLE pat_otb_registry (
legal_address_region number(10,0) NULL,
declarant nvarchar2(2000) NOT NULL,
registry_cert_number nvarchar2(2000) NOT NULL,
decision_to_grant_date date NULL,
competent_authority smallint NOT NULL,
expiry_date date NULL,
decision_to_grant_number nvarchar2(2000) NULL,
decision_to_cancel_number nvarchar2(2000) NULL,
decision_to_exclude_number nvarchar2(2000) NULL,
certification_authority nvarchar2(2000) NOT NULL,
appraisee varchar2(2000) NOT NULL,
date_of_end_stage date NULL,
certification_field nvarchar2(2000) NULL,
validity_years integer NULL,
decision_to_extend_number nvarchar2(2000) NULL,
issue_date date NULL,
reason nvarchar2(2000) NULL,
decision_to_cancel_date date NULL,
decision_to_exclude_date date NULL,
decision_to_extend_date date NULL,
extended_to_date date NULL,
oa_registry_number nvarchar2(2000) NULL,
grounds_for_issue nvarchar2(2000) NULL,
doc_num nvarchar2(2000) NULL,
CONSTRAINT pat_otb_registry_pk PRIMARY KEY (registry_cert_number)
) ;
спящего режима запроса:
getEntityManager().createQuery("SELECT o FROM " + getEntityName() + " o").getResultList()
SQL-запрос:
getEntityManager().createNativeQuery("select * from pat_otb_registry")
Кроме того, я не вижу вашу аннотацию @Id для первичного ключа, она выглядит нормально для меня. У меня нет терпения, чтобы проверить все имена столбцов, но я предполагаю, что если было неправильное имя, он должен жаловаться во время развертывания. –
Некоторые примеры ваших запросов SQL и запросов на спящий режим, безусловно, помогут понять проблему. – whitesite
Gut feel говорит мне, что это будет связано с выбором/причиной использования столбца NVARCHAR2 для первичного ключа. В чем все соответствующие наборы символов? –