Note that there are some explanatory texts on larger screens.

plurals
  1. POHow do I update multiple tables inside a named query?
    text
    copied!<p>I am using Eclipselink v2.3.3</p> <p>I am getting this error </p> <pre><code>Error compiling the query [Credential.updateExistingCredentialNoPW: UPDATE Credential c SET c.active = :active, c.employee.address.streetAddress = :stadd, c.employee.address.city = :city, c.employee.address.province = :prov, c.employee.address.zip = :zip WHERE c.id = :id], line 1, column 46: invalid navigation expression [c.employee], cannot navigate association field [employee] in the SET clause target. </code></pre> <p>when I try to run my code.</p> <p>Here are the affected named queries that prevents running my code</p> <pre><code>@NamedQuery(name = "Credential.updateExistingCredentialNoPW", query = "UPDATE Credential c " + "SET c.active = :active, " + "c.employee.address.streetAddress = :stadd, " + "c.employee.address.city = :city, " + "c.employee.address.province = :prov, " + "c.employee.address.zip = :zip " + "WHERE c.id = :id"), @NamedQuery(name = "Credential.updateExistingCredential", query = "UPDATE Credential c " + "SET c.password = :pw, " + "c.active = :active, " + "c.employee.address.streetAddress = :stadd, " + "c.employee.address.city = :city, " + "c.employee.address.province = :prov, " + "c.employee.address.zip = :zip " + "WHERE c.id = :id"), @NamedQuery(name = "Credential.updateSalary", query = "UPDATE Credential c " + "SET c.employee.salary.value = :val WHERE c.id = :id") </code></pre> <p>Here is the class where I put all the named queries specified above</p> <pre><code>public class Credential implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(generator = "CRED_GEN", strategy = GenerationType.IDENTITY) @Column(name = "CREDENTIAL_ID") private long id; // unique &amp; not nullabe username @Column(nullable = false, unique = true) private String username; @Column(nullable = false, name = "USER_KEY") private String password; @Column(nullable = false) private boolean active; @Column(nullable = false) private int userLevel; @OneToOne(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER) private Employee employee; public Credential() { } public Credential(String username, String password, boolean active, int userLevel, Employee employee) throws NoSuchAlgorithmException { this.username = username; this.setPassword(password); this.active = active; this.userLevel = userLevel; this.employee = employee; } public long getId() { return id; } public void setId(long id) { this.id = id; } public int getUserLevel() { return userLevel; } public void setUserLevel(int userLevel) { this.userLevel = userLevel; } public boolean isActive() { return active; } public void setActive(boolean active) { this.active = active; } public Employee getEmployee() { return employee; } public void setEmployee(Employee employee) { this.employee = employee; } public String getPassword() { return password; } public void setPassword(String password) throws NoSuchAlgorithmException { this.password = Cryptography.getHash(password); } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } </code></pre> <p>Am I doing it wrong?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload