Странное поведение Vaadin SQLContainer

#java #nullpointerexception #null #vaadin #vaadin7

#java #Исключение nullpointerexception #null #vaadin #vaadin7

Вопрос:

У меня возникли некоторые проблемы с SQLContainer от Vaadin. Имя моего SQLContainer — это agentContainer.

Теперь, если я выполню следующий код:

 System.out.println(agentContainer.getItemIds());
System.out.println(agentContainer.containsId("3"));
System.out.println(agentContainer.containsId(new RowId(new Object[]{"3"})));
System.out.println(agentContainer.getItem((new RowId(new Object[]{"3"}))));
System.out.println(agentContainer.getItem("3"));
  

Я получаю:

[1, 2, 3, 4, 5, 6, 8, 9, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]

ложь

Верно

null

null

Я совершенно не понимаю, почему contains возвращает true, но getItem возвращает null.

Кто-нибудь может помочь мне определить, почему это происходит?

Комментарии:

1. Является ли ключевое поле числом? Мне кажется, что это целые числа. Попробуйте system.out.println(agentContainer.GetItem(3))

2. Вы правы. Это решило проблему. Хотя мы можем поместить туда общие объекты, они чувствительны к базовому типу поля.

Ответ №1:

Оказывается, что GetItem может быть присвоен любому объекту, который вам нравится, но тип объекта должен соответствовать базовому полю. Для целых чисел поставщика и для строковых типов предоставляется строка.