Таблица не отображается?

Теперь, насколько я понимаю, для отображения таблицы в БД мы добавим:

@Entity()
@Table(name = "test")
public class Test implements Serializable {
    /** Constant - serial version UID. */
    public final static long serialVersionUID = 1L;

    /** Member variable - represents the "name" field. */
    public String name;
}

но по какой-то причине, когда я делаю запрос:

delete from test;

это дает мне эту ошибку:

15:55:54,140 ERROR [JsonFilter] javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: spa_splash_page_ad is not mapped [delete from spa_splash_page_ad]
javax.servlet.ServletException: javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: spa_splash_page_ad is not mapped [delete from spa_splash_page_ad]
    at com.pinksheets.common.web.servlet.DeleteSplashPageServlet.fetch(DeleteSplashPageServlet.java:30)
    at com.pinksheets.common.web.servlet.DeleteSplashPageServlet.fetch(DeleteSplashPageServlet.java:17)

Есть идеи, почему он это делает?

2 ответа

Решение

delete from table test не является действительным запросом в любом QL, о котором я знаю.

Класс отображается как @IdClass является составным идентификатором, и вы никогда не удалите его напрямую. Вы бы удалили объект, который имеет это в качестве своего идентификатора. Кроме того, так как это @IdClassЯ не уверен, что ожидать, когда вы даете явное @Table отображение. @IdClass является значением первичного ключа и всегда должен использоваться как идентификатор некоторого другого класса. У него нет своего стола. См. Ссылку на аннотации гибернации для отображения составных идентификаторов и правильного использования@IdClass,

  1. Пытаться:

    delete from com.mycompany.database.Test
    прочитать о полностью определенных именах (это полное имя пакета / путь + имя класса)

  2. Почему слово table в запросе?

  3. Также удалите () от @Entity()

  4. Вы должны соблюдать соглашение Java, назовите свои сущности заглавными буквами:

    class Test{}чем вы можете:

    delete from fully.qualified.name.Test

  5. Убедитесь, что сущность @javax.persistence.Entity и не что-то еще.

Другие вопросы по тегам