
1337
08.06.2018
03:46:17
есть какой-то аггрегатор джава конференций (и других девелоперских) в Минске?

Alpha
08.06.2018
04:44:05
Берёшь и как истинный альфа-самец переопределяешь модификаторы полей/методов в объекте

Sergei
08.06.2018
04:45:18

Google

Alpha
08.06.2018
04:45:49
Минус в том, что появляется зависимость от кода, а не от внешнего API
Т.е. это конечно дурной тон, все дела, но если прижмёт — можно использовать

Nataliia
08.06.2018
04:47:10
ну а шо еще делать, иначе никак, если он такую гадость наделал

Sergei
08.06.2018
04:49:09
Вот например миленько: "there are a number of complications. If a final field is initialized to a constant expression (§15.28) in the field declaration, changes to the final field may not be observed, since uses of that finalfield are replaced at compile time with the value of the constant expression."
Другими словами, вполне реальный случай, когда мы меняем значение final-поля, а оно, внезапно, ни на что не влияет, так как умный компилятор давно всюду в код подставил константы.


Yan
08.06.2018
06:50:50
ребятки,подскажите: как правильно хранить какой-то стейт при работе с спринговсками schedule-ами, т.е. что-то просхоодит раз в сколько то и нужно пару значений результата держать "в уме",спасибо
да и вообще,как фен-шую хранить стейт в сервисах или не в сервисах,какие есть бест практики?

Dmitry
08.06.2018
06:54:50
У тебя один инстанс приложения ?

Алексей
08.06.2018
06:56:12
парни нужна помощь,вроде банальная ошибка но не могу пока разобраться,есть таблица с двумя полями id автоинкрементируется и второе поле строка,написал insert чтобы вставлять значение только в строку,в итоге вылетает ошибка что id поле не найдено

Google

Алексей
08.06.2018
06:56:27
вот модель для таблицы
@Entity
@Table(schema = "public", name = "example")
public class TableForExample {
@GeneratedValue
@Id
@Column(name = "id")
Long id;
@Column(name = "value", length = 20)
String value;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}

Yan
08.06.2018
06:56:32
да,один

Алексей
08.06.2018
06:56:45
и вот запрос
public interface RepoValue extends JpaRepository<TableForExample, Integer> {
@Modifying(clearAutomatically = true)
@Transactional
@Query(value = "INSERT INTO ad.example (VALUE) values (?1)\n",nativeQuery = true)
void insertString(String string);}
и ошибка Caused by: org.postgresql.util.PSQLException: Колонки id не найдено в этом ResultSet’’е.

Dmitry
08.06.2018
06:57:15
да,один
Синглетон заведи и там храни состояние
Если конечно тебе его не надо восстанавливать после ребута приложения

Yan
08.06.2018
06:57:53
могу сделать компонент (бин) с деф. скоупом?

Dmitry
08.06.2018
06:57:58
Ага
По умолчанию он как раз синглтон
@Service

Yan
08.06.2018
06:58:42
угу
а если нужно после ребута? как лучше в такой ситуации?

Dmitry
08.06.2018
06:59:15
Бд )

Yan
08.06.2018
07:00:52
в файлик фонарь?
и как лучше восстанавливать состояние,через postconstruct?

Dmitry
08.06.2018
07:03:26
Как удобно будет, можешь прямо в конструкторе если у тебя все нужные блины заинжектились

Yan
08.06.2018
07:06:37
большое спасибо

Pavel
08.06.2018
07:18:45

Google

Алексей
08.06.2018
07:22:01
поменял,не помогло та же ошибка(
вот так таблицу создал в постгре
CREATE TABLE ad.example (
id serial NOT NULL,
value varchar(20) NOT NULL,
CONSTRAINT example_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
) ;

Ivan
08.06.2018
07:23:25

Dmitry
08.06.2018
07:23:26

Ivan
08.06.2018
07:23:50
а лол

Dmitry
08.06.2018
07:23:51
Получи эннтити поменяй его и сохрани

Ivan
08.06.2018
07:23:52
там вообще ад
=)

Алексей
08.06.2018
07:25:58
а что не так,не пойму

Диоген
08.06.2018
07:27:09
включи логирование запросов и посмотри что он там делает

Dmitry
08.06.2018
07:28:16
Зачем ты делаешь инсетр через нэйтив квери ?

Алексей
08.06.2018
07:28:55
по примеру делал,он без найтив инсерт не понимал только селект

Dmitry
08.06.2018
07:30:02
Это же жпа, у тебя есть эннтити , создаёшь объект этого эннтити , заполняешь его, потом делаешь repository.save(твое эннтити)

Алексей
08.06.2018
07:33:05
а когда я заполняю сущность могу ведь не указывать поле id,раз я его автоинкрементирую?
я делал save но передавал не сущность а строку)естественно не работало вот так
@RestController
public class ServiceForRestExample {
@Autowired
private RepoValue workwithStrings;
private TableForExample result;
@RequestMapping(value = "/page", method = RequestMethod.POST)
public TableForExample savePage(@RequestBody String pageContent) {
try {
String reverseString = new StringBuffer(pageContent).reverse().toString();
workwithStrings.save(reverseString);
TableForExample result = workwithStrings.returnStrings();
} catch (Exception e) {
e.printStackTrace();
String a = "";
return null;
}
return result;
}
}

Dmitry
08.06.2018
07:34:30
Смотря как ты написал репозитрий
Вот TableforaExample это и есть твое энтити

Google

Алексей
08.06.2018
07:36:46
да я знаю,то есть я же могу в save передать строку или все таки делаю так workwithStrings.save(TableforaExample); ?

Dmitry
08.06.2018
07:37:14
Второе

Алексей
08.06.2018
07:39:42
а как мне заполнить сущность значением переменной reverseString?

Dmitry
08.06.2018
07:41:04
Эм

Диоген
08.06.2018
07:41:10
:)

Admin
ERROR: S client not available

Диоген
08.06.2018
07:41:28
@javastart

Max
08.06.2018
10:03:04
Привет всем, посоветуйте программу для построения uml диаграм

Yauheni
08.06.2018
10:15:00
visio, draw.io

guga
08.06.2018
10:24:42

R
08.06.2018
10:26:19
Visual Paradigm хороша. Очень рекомендую.

Marat
08.06.2018
10:27:42

Oleksandr
08.06.2018
10:28:31
ни за чем
откуда это?
мб ошметки какого-то рефакторинга

Marat
08.06.2018
10:29:16
разгребаю завалы старого кода, наткнулся на это

Oleksandr
08.06.2018
10:29:41
есть чего интересного в гитовой истории по этому коду?
(чтобы проверить гипотезу про рефакторинг)

Marat
08.06.2018
10:31:28
был просто метод synchronized, потом внутрь if добавили блок с synchronized, и похоже, что снаружи забыли снять

1337
08.06.2018
10:32:34
синглтон же
обычный

Google

1337
08.06.2018
10:33:13
вы чего

Marat
08.06.2018
10:33:20
не, там еще regionTreeWrapper по таймеру обновляется

1337
08.06.2018
10:33:35
аа

Vladimir
08.06.2018
10:34:07

Marat
08.06.2018
10:34:19
просто ленивая инциализация (если объект потребовался, а таймер не успел тикнуть)

Oleksandr
08.06.2018
10:34:35
ну тогда можешь смело менять
если, конечно, оно тебе сильно надо, я бы не трогал, чисто на всякий случай?

Alexander
08.06.2018
10:35:50
имхо, я бы или не трогал или тогда уж на нормальный double checked locking переделал.

Oleksandr
08.06.2018
10:37:48
с одной стороны, код надо чистить
а с другой, легаси это синоним авгиевых конюшень, и там очень быстро отпадает желание иметь красивый код (лишь бы работал, хоть как-то)

Marat
08.06.2018
10:38:29

Alexander
08.06.2018
10:38:55

Marat
08.06.2018
10:39:09
она волатайл

Alexander
08.06.2018
10:39:35
а, ну ок, ок

Alpha
08.06.2018
10:49:17

Алексей
08.06.2018
11:06:43
я не использовал,он мне для чего в этом примере?
А где у тебя экьалс и хэш-код, если ты работаешь с БД?