Proste zapytanie JPQL nie działa.

0

Nie wiem jakim cudem tak proste zapytanie nie działa:

TypedQuery<Message> query = em.createQuery("SELECT m FROM Message m WHERE m.read = FALSE", Message.class);
List<Message> messages =  query.getResultList();

Logi:

javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'READ, STATE, user FROM Message WHERE (READ = 0)' at line 1
Error Code: 1064
Call: SELECT ID, DATE, DESCRIPTION, READ, STATE, user FROM Message WHERE (READ = ?)
	bind => [1 parameter bound]
Query: ReadAllQuery(referenceClass=Message sql="SELECT ID, DATE, DESCRIPTION, READ, STATE, user FROM Message WHERE (READ = ?)")
	at org.eclipse.persistence.internal.jpa.QueryImpl.getDetailedException(QueryImpl.java:377)
	at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:260)
	at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:468)
 

Dodam plik encji:

@Entity
@Table(name="Message")
@NamedQuery(name="Message.findAll", query="SELECT m FROM Message m")
public class Message implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(unique=true, nullable=false)
	private int id;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(nullable=false)
	private Date date;

	@Column(length=254)
	private String description;

	@Column(nullable=false)
	private boolean read;
...
0

Kolumna READ ma nazwę jak słowo zastrzeżone. Hibernate, czy czego tam używasz jako implementacji JPA, tworząc tabelę wziął nazwę w cudzysłów i sie utworzyło ok. Teraz przy budowaniu zapytania nie używa już cudzysłowiów i się sypie. Zmień nazę kolumny na coś bardziej do ludzi. To samo z user

0

Dzięki wielkie. Z taką głupotą się 2h męczyć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1