-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: SAPDB Char bei Native Query
PostPosted: Sat Feb 24, 2007 7:22 am 
Newbie

Joined: Tue Nov 07, 2006 5:29 pm
Posts: 3
Hallo

ich habe ein Problem mit verschiedenen Native Queries in Verbindung mit der SAPDB (Version 7.5.0). Ich arbeite in einem Projekt in dem ich in einer Weboberfläche verschiedene read-only Sichten auf Tabellen in einer SAPDB erstellen muss. Da ich keine Daten verändern muss verwende ich native SQL Queries um die Daten auszulesen und tabellarisch darzustellen.

Dabei tritt bei mir ein eigenartiges Problem auf: bei einem Feld vom Typ Char(3) wird immer nur das erste Zeichen ausgegeben. Eine Beispieltabelle:

TABLE: KUNDE

COLUMNS:

NAME Varchar(200)
KUNDENNR: CHAR(3)

Ein Beispieldatensatz:

NAME: Test GmbH
KUNDENNR: D12

Die Daten lese ich über das folgende Statement aus:

SELECT NAME as "Name", KUNDENNR AS "KNR" FROM KUNDE

Ich nutze den AliasToEntityMapResultTransformer um aus jeder Zeile eine Map zu erzeugen. In der Map steht nun überraschenderweise folgendes:

Name: Test GmbH (Das ist OK)
KNR: D (hier wird nur das erste Zeichen ausgelesen...)

Nach mehreren Tests habe ich festgestellt, dass dieses Verhalten nur im Zusammenhang mit CHAR Feldern auftritt.

Hatte jemand schon einmal ein ähnliches Problem? Gibt es dafür eine Lösung?

Vielen Dank im voraus!

Aldan


Hibernate version: 3.2.2 GA


Top
 Profile  
 
 Post subject:
PostPosted: Thu Mar 01, 2007 11:34 am 
Pro
Pro

Joined: Mon Jan 24, 2005 5:39 am
Posts: 216
Location: Germany
Hallo,

das Problem tritt auch bei allen anderen Datenbanken auf.
Grund ist die Type-Autodetection von Hibernate.
Diese wird in der Dialect-Klasse konfiguriert.
In diesem Fall sogar in der entsprechenden Basisklasse:

Code:
registerHibernateType( Types.CHAR, Hibernate.CHARACTER.getName() );

Verwendet man stattdessen eine eigene Dialect-Klasse mit z.B.:

Code:
registerHibernateType(Types.CHAR, Hibernate.STRING.getName());


dann funktioniert es.

Das Standardverhalten von Hibernate ist anscheinend zu konservativ.
Vielleicht gibt es dafür aber auch anderen Gründe, die
ich noch nicht sehe.

_________________
dont forget to rate !


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.