Таблица не отображается?
Теперь, насколько я понимаю, для отображения таблицы в БД мы добавим:
@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
,
Пытаться:
delete from com.mycompany.database.Test
прочитать о полностью определенных именах (это полное имя пакета / путь + имя класса)Почему слово
table
в запросе?Также удалите
()
от@Entity()
Вы должны соблюдать соглашение Java, назовите свои сущности заглавными буквами:
class Test{}
чем вы можете:delete from fully.qualified.name.Test
Убедитесь, что сущность
@javax.persistence.Entity
и не что-то еще.