2014-10-30 3 views
-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» возвращает правильную строку.

+0

NPE при вызове 'em.find' не имеет ничего общего с тем, что строка не существует. Скорее всего, EntityManager имеет значение NULL. Вам нужно будет больше узнать о вашей конфигурации (persistence.xml, EntityManager - вы используете инжекцию контейнера, создаете ее самостоятельно), среду выполнения (то есть станал, сервер). По какой-то причине EntityManager не создается, если в этом случае EM имеет значение NULL. Также опубликуйте stacktrace. –

+0

ooh, я использовал отладчик в Netbeans, но не видел его. Вы правы, что это null. Я буду смотреть глубже в свой код, чтобы попытаться выяснить, где ошибка. спасибо @peeskillet – user2798413

ответ

1

entityManager является null. Вот почему вы получаете NullPointerException, когда вы вызываете метод em.find().