-2
My entitymanager.find() дает nullpointerexception, в базе данных есть строка с предоставленным идентификатором.EntityManager.find (MyClass.class, id) возвращает null
@Entity
public class ForumCategory implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column (name="title")
private String title;
@Column (name="datecreated")
private Date created;
@Column (name="dateupdated")
private Date updated;
@Column (name="createdby")
private String createdBy;
@OneToMany(mappedBy="category")
private Set<ForumThread> threads;
это метод находкой
public ForumCategory find(Long id) {
ForumCategory category = em.find(ForumCategory.class, id);
return category;
}
я попытался с помощью, но все же ошибка.
em.createQuery("SELECT obj FROM ForumCategory obj WHERE obj.id=1")
я использую MySqlWorkbench и когда я запускаю «выберите * из forumcategory где ID = 1» возвращает правильную строку.
NPE при вызове 'em.find' не имеет ничего общего с тем, что строка не существует. Скорее всего, EntityManager имеет значение NULL. Вам нужно будет больше узнать о вашей конфигурации (persistence.xml, EntityManager - вы используете инжекцию контейнера, создаете ее самостоятельно), среду выполнения (то есть станал, сервер). По какой-то причине EntityManager не создается, если в этом случае EM имеет значение NULL. Также опубликуйте stacktrace. –
ooh, я использовал отладчик в Netbeans, но не видел его. Вы правы, что это null. Я буду смотреть глубже в свой код, чтобы попытаться выяснить, где ошибка. спасибо @peeskillet – user2798413