Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 OracleDB и Hibernate  [new]
ccoder
Member

Откуда:
Сообщений: 547
Здравствуйте.
Столкнулся с проблемой то что в NetBeans при генерации по умолчанию типу Number даёться BigDecimal и при использовании получаю
автор
expected type: java.math.BigDecimal, actual value: java.lang.Integer

Т.е. приходиться ручным способом исправлять на Integer.

Хотелбы узнать как тут легче обойти эту проблему. (Т.е. как это грамотно сделать)
Т.к. Руками каждый раз не хочется исправлять.
25 ноя 11, 00:42    [11655631]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
kastolom
Member

Откуда:
Сообщений: 325
ccoder,

NUMBER(20, 2) != Integer

Поэтому NetBeans берет тип побольше
Себе JPA-сущности(поля, аннотации над полями, типы полей, геттеры, сеттеры, комментарии к полям и методам) генерирую скриптом на основании представлений user_tab_columns, user_col_comments
получается нечто типа:
+
/**
 * УнНом(исходный)
 */
@Column(name = "F_SVALDOCID")
private Integer svaldocid;
/**
 * [Дата] дата платежки
 */
@Column(name = "F_DATE")
@Temporal(TemporalType.DATE) 
private Date date;
/**
 * [Сумма] сумма платежа
 */
@Column(name = "F_SUMMA")
private BigDecimal summa;
/**
 * Получить унном(исходный)
 * @return унном(исходный)
 */
public Integer getSvaldocid() {
    return svaldocid;
}
/**
 * Установить унном(исходный)
 * @param svaldocid унном(исходный)
 */
public void setSvaldocid(Integer svaldocid) {
    this.svaldocid = svaldocid;
}
/**
 * Получить [дата] дата платежки
 * @return [дата] дата платежки
 */
public Date getDate() {
    return date;
}
/**
 * Установить [дата] дата платежки
 * @param date [дата] дата платежки
 */
public void setDate(Date date) {
    this.date = date;
}
/**
 * Получить [сумма] сумма платежа
 * @return [сумма] сумма платежа
 */
public BigDecimal getSumma() {
    return summa;
}
/**
 * Установить [сумма] сумма платежа
 * @param summa [сумма] сумма платежа
 */
public void setSumma(BigDecimal summa) {
    this.summa = summa;
}
25 ноя 11, 11:32    [11657118]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
ccoder
Member

Откуда:
Сообщений: 547
ccoder
Здравствуйте.
Столкнулся с проблемой то что в NetBeans при генерации по умолчанию типу Number даёться BigDecimal и при использовании получаю
автор
expected type: java.math.BigDecimal, actual value: java.lang.Integer

Т.е. приходиться ручным способом исправлять на Integer.

Хотелбы узнать как тут легче обойти эту проблему. (Т.е. как это грамотно сделать)
Т.к. Руками каждый раз не хочется исправлять.

Попробовал сделать NUMBER(8,0)
И всё вроде-бы работает.
Вопрос: точно-ли NUMBER(8,0) является integer. Т.е. могут-ли с ним возникнуть проблемы например с большими числами?
25 ноя 11, 18:33    [11661572]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
kastolom
Member

Откуда:
Сообщений: 325
NUMBER(8,0)
эквивалентно
NUMBER(8)
Означает, что у тебя 8 знаков до запятой и 0 знков после, т.е. целое число, для Java это Integer
25 ноя 11, 18:40    [11661619]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
ccoder
Member

Откуда:
Сообщений: 547
kastolom
NUMBER(8,0)
эквивалентно
NUMBER(8)
Означает, что у тебя 8 знаков до запятой и 0 знков после, т.е. целое число, для Java это Integer

У integer вроде их max 10 (например 2147483648).

А если чтото уже готовое в Orable db для этого дела?
25 ноя 11, 18:49    [11661659]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
ccoder
kastolom
NUMBER(8,0)
эквивалентно
NUMBER(8)
Означает, что у тебя 8 знаков до запятой и 0 знков после, т.е. целое число, для Java это Integer

У integer вроде их max 10 (например 2147483648).

А если чтото уже готовое в Orable db для этого дела?

для какого этого дела?
для 2147483648 есть number(10).
для больших целых есть подтип integer - он же number(38)
25 ноя 11, 19:10    [11661761]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
ccoder
Member

Откуда:
Сообщений: 547
orawish
ccoder
пропущено...

У integer вроде их max 10 (например 2147483648).

А если чтото уже готовое в Orable db для этого дела?

для какого этого дела?
для 2147483648 есть number(10).
для больших целых есть подтип integer - он же number(38)

Всмысле надтип? Ато чтото очень большой для Integer(java)
25 ноя 11, 19:15    [11661780]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
ccoder
Member

Откуда:
Сообщений: 547
автор
для больших целых есть подтип integer - он же number(38)
25 ноя 11, 19:19    [11661795]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
ccoder
Member

Откуда:
Сообщений: 547
P.S.

Для number(10) всё очень хорошо работает.
Получается генератором int.
25 ноя 11, 19:20    [11661799]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
ccoder
orawish
пропущено...

для какого этого дела?
для 2147483648 есть number(10).
для больших целых есть подтип integer - он же number(38)

Всмысле надтип? Ато чтото очень большой для Integer(java)

да нет. в смысле именно под-
oracle STANDARD
subtype INTEGER is NUMBER(38,0);

(разумеется, безотносительно джавы и прочих глупостей)
25 ноя 11, 19:39    [11661869]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
ccoder
Member

Откуда:
Сообщений: 547
orawish
ccoder
пропущено...

Всмысле надтип? Ато чтото очень большой для Integer(java)

да нет. в смысле именно под-
oracle STANDARD
subtype INTEGER is NUMBER(38,0);

(разумеется, безотносительно джавы и прочих глупостей)

Я какбы неособо понял.
Тоесть Oracle тип INTEGER состоит из 32 значных цифр?
А откуда это исходит? (зачем 32)
25 ноя 11, 20:04    [11661955]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
ccoder
orawish
пропущено...

да нет. в смысле именно под-
пропущено...

(разумеется, безотносительно джавы и прочих глупостей)

Я какбы неособо понял.
Тоесть Oracle тип INTEGER состоит из 32 значных цифр?
А откуда это исходит? (зачем 32)

ну, не 32, а таки 38
create table t(i integer);
insert into t values (acos(-1)*1e38);
select to_char(i  ,rpad('fm',50,9))
      ,to_char(i+1,rpad('fm',50,9))
from t;
а зачем - шоб было (так думаю ;)
25 ноя 11, 21:39    [11662223]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
ccoder
Member

Откуда:
Сообщений: 547
orawish
ccoder
пропущено...

Я какбы неособо понял.
Тоесть Oracle тип INTEGER состоит из 32 значных цифр?
А откуда это исходит? (зачем 32)

ну, не 32, а таки 38
create table t(i integer);
insert into t values (acos(-1)*1e38);
select to_char(i  ,rpad('fm',50,9))
      ,to_char(i+1,rpad('fm',50,9))
from t;
а зачем - шоб было (так думаю ;)

Не понял все равно.
Зачем им понадобилось делать 38 чисел?
25 ноя 11, 21:49    [11662250]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
ccoder
..
Не понял все равно.
Зачем им понадобилось делать 38 чисел?

лично я из e38 и 32768 (и 2147483648 и т.п. непонятные миру слезы) однозначно, предпочту e38.
между прочим - практика показывает, что 2147483648 есть значение давно (и по-делу) превзойденное в промышленных системах даже в примитивных задачах обслуживания суррогатного ключа отдельных сущностей
25 ноя 11, 22:41    [11662442]     Ответить | Цитировать Сообщить модератору
 Re: OracleDB и Hibernate  [new]
ccoder
Member

Откуда:
Сообщений: 547
orawish
ccoder
..
Не понял все равно.
Зачем им понадобилось делать 38 чисел?

лично я из e38 и 32768 (и 2147483648 и т.п. непонятные миру слезы) однозначно, предпочту e38.
между прочим - практика показывает, что 2147483648 есть значение давно (и по-делу) превзойденное в промышленных системах даже в примитивных задачах обслуживания суррогатного ключа отдельных сущностей

Теперь смог охватить. Спасибо
25 ноя 11, 22:53    [11662495]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить