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;
...