Если вы хотите, чтобы ваш столбец не вставлялся и не обновлялся, вы можете создать столбец insertable=false
и updatable=false
.
Цитирование из JBoss Hibernate Документы :
вставляемый (необязательно): будет ли столбец частью оператора вставки (по умолчанию true) [119 ]
обновляемый (необязательно): будет ли столбец частью инструкции обновления (по умолчанию true)
blockquote>Если вы хотите, чтобы
PassengerPhoneNo
не было вставлено или обновлено в базе данных Таблица, которую вы можете иметьinsertable = false
иupdatable=false
, как показано ниже:@Column(name="PassengerPhoneNo", insertable = false, updatable = false) private String PassengerPhoneNo;
Это не целое число, это - число с плавающей точкой на 32 бита. Я еще не вполне разработал формат, это не IEEE.
Править: получил его. Знак на 1 бит, экспонента на 11 битов со смещением 0x3ff и мантисса на 20 битов с подразумеваемым битом налево. В C, принимая положительные числа только:
double offset = pow(2, (i >> 20) - 0x3ff) * (((i & 0xfffff) + 0x100000) / (double) 0x100000);
Это приводит к 0x40000000 = 2.0, таким образом, срок начала работы должен быть 30.12.1899.
Отредактируйте снова: так как Вы были так добры для принятия моего ответа, и Вы кажетесь соответствующими о скорости, я думал, что совершенствую это немного. Вам не нужна дробная часть вещественного числа, таким образом, мы можем преобразовать прямо в целое число с помощью только битовые операции. В Python на этот раз, вместе с результатами испытаний. Я включал некоторые промежуточные значения для лучшей удобочитаемости. В дополнение к ограничению никаких отрицательных чисел эта версия могла бы иметь проблемы, когда экспонента переходит 19, но это должно сохранить Вас хорошими до 3335 года.
>>> def IntFromReal32(i):
exponent = (i >> 20) - 0x3ff
mantissa = (i & 0xfffff) + 0x100000
return mantissa >> (20 - exponent)
>>> testdata = range(0x40000000,0x40240000,0x10000) + range(0x40800000,0x40830000,0x10000) + [1088631936]
>>> from datetime import date,timedelta
>>> for i in testdata:
print "0x%08x" % i, date(1899,12,30) + timedelta(IntFromReal32(i))
0x40000000 1900-01-01
0x40010000 1900-01-01
0x40020000 1900-01-01
0x40030000 1900-01-01
0x40040000 1900-01-01
0x40050000 1900-01-01
0x40060000 1900-01-01
0x40070000 1900-01-01
0x40080000 1900-01-02
0x40090000 1900-01-02
0x400a0000 1900-01-02
0x400b0000 1900-01-02
0x400c0000 1900-01-02
0x400d0000 1900-01-02
0x400e0000 1900-01-02
0x400f0000 1900-01-02
0x40100000 1900-01-03
0x40110000 1900-01-03
0x40120000 1900-01-03
0x40130000 1900-01-03
0x40140000 1900-01-04
0x40150000 1900-01-04
0x40160000 1900-01-04
0x40170000 1900-01-04
0x40180000 1900-01-05
0x40190000 1900-01-05
0x401a0000 1900-01-05
0x401b0000 1900-01-05
0x401c0000 1900-01-06
0x401d0000 1900-01-06
0x401e0000 1900-01-06
0x401f0000 1900-01-06
0x40200000 1900-01-07
0x40210000 1900-01-07
0x40220000 1900-01-08
0x40230000 1900-01-08
0x40800000 1901-05-26
0x40810000 1901-06-27
0x40820000 1901-07-29
0x40e33480 2007-09-07
Я сказал бы, что vmarquez близок.
Вот даты 21.03.2009 и 22.03.2009 как Unix epochtime:
In [8]: time.strftime("%s", (2009, 3, 21, 1, 1, 0, 0,0,0))
Out[8]: '1237590060'
In [9]: time.strftime("%s", (2009, 3, 22, 1, 1, 0, 0,0,0))
Out[9]: '1237676460'
И здесь они находятся в шестнадцатеричном числе:
In [10]: print("%0x %0x" % (1237590060, 1237676460))
49c4202c 49c571ac
При взятии только сначала 5 цифр рост равняется 21. Какой вид соответствий Ваш формат, отрицательный?
Вы уверены, что значения соответствуют 07.09.2007?
Я спрашиваю, потому что 1088631936 число секунд, так как Linux (и др.) обнуляет дату: 01.01.1970 0:00:00 к 30.06.2004 21:45:36.
Кажется мне разумным, чтобы думать, что значение является секундами начиная с этой обычной нулевой даты.
Править: Я знаю, что для этого очень возможно не быть корректным ответом. Это - всего один подход (допустимый), но я думаю, что больше информации необходимо (см. комментарии). Редактирование этого (снова) для выявления вопроса в надежде на кого-то еще, чтобы ответить на это или дать идеи. Я: со справедливостью, спортивным и совместно использующим духом :D
Некоторый контекст был бы полезен. Если Ваша внешность файла данных что-то, буквально или по крайней мере фигурально, как этот файл, vmarquez находится на деньгах.
http://www.slac.stanford.edu/comp/net/bandwidth-tests/eventanalysis/all_100days_sep04/node1.niit.pk
Та ссылка является данными, произведенными инструментом Available Bandwith Estimation (ABwE) - любопытный объект - то, что это на самом деле содержит те 1 088 631 936 значений, а также контекст. Тот пример
date time abw xtr dbcap avabw avxtr avdbcap rtt timestamp
06/30/04 14:43:48 1.000 0.000 1.100 1.042 0.003 1.095 384.387 1088631828
06/30/04 14:45:36 1.100 0.000 1.100 1.051 0.003 1.096 376.408 1088631936
06/30/04 14:47:23 1.000 0.000 1.100 1.043 0.003 1.097 375.196 1088632043
кажется, имеет семичасовое смещение от предложенной временной стоимости 21:45:36. (Вероятно, локальный Стэнфорд, работая на Летнем времени.) Ну, Вы только показали нам, как Ваша программа использует 2 из этих 8 цифр, таким образом, мы должны будем предположить, что другие 6 проигнорированы (потому что Ваша программа могла делать что-либо, что она хочет с теми другими цифрами).
Так, мы могли сказать, что формат ввода: 40mn0000, где m и n являются двумя шестнадцатеричными цифрами.
Затем вывод: 01.01.1900 + пол ((2^ (m+1)-2) + n*2^ (m-3)) дни
Объяснение:
Используя эти два правила, и играющий вокруг с числами, Вы получаете уравнение выше. (За исключением пола, который был добавлен, потому что вывод не отображает дробные дни).
Я предполагаю, что Вы могли переписать это путем замены двух отдельных шестнадцатеричных переменных m и n с единственным 2-разрядным шестнадцатеричным числом H. Однако я думаю, что это сделало бы уравнение намного более ужасным.