JPQL Update Query

31,144

I was able to rewrite the query that I needed:

UPDATE LocalizedText L SET L.content = :content WHERE EXISTS (SELECT T FROM QuestionGroupText T WHERE T.localizedText.id = L.id AND T.generatedId = :generatedId)
Share:
31,144
user2219247
Author by

user2219247

Updated on November 07, 2020

Comments

  • user2219247
    user2219247 over 3 years

    I have an entity like this:

    @Entity
    @Table(name = "QUESTION_GROUP_TEXT")
    @NamedQueries({
            @NamedQuery(
                    name = EntityUtils.NamedQuery.UPDATE_QUESTION_GROUP_TEXT,
                    query = "UPDATE QuestionGroupText T SET T.localizedText.content = :content WHERE T.generatedId = :generatedId")
    })
    public class QuestionGroupText implements Serializable {
    
        @Column(name = "GENERATED_ID", nullable = false, unique = true)
        private String generatedId = generateId();
    
        @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
        @JoinColumn(name = "LOCALIZED_TEXT_ID", nullable = false)
        private LocalizedText localizedText;
    
        //Getters and setters
    
    }
    

    This query: UPDATE QuestionGroupText T SET T.localizedText.content = :content WHERE T.generatedId = :generatedId does not work, it throws:

    Caused by: 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 'set CONTENT='Question Label' where GENERATED_ID='AD78F9B5E2A146D9AB9D94096DA835B' at line 1
    

    There must be something wrong with this part of the query: T.localizedText.content, is there any way I can change it to make this work?