Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPQL更新查询_Java_Sql_Hibernate_Jpa_Jpql - Fatal编程技术网

Java JPQL更新查询

Java JPQL更新查询,java,sql,hibernate,jpa,jpql,Java,Sql,Hibernate,Jpa,Jpql,我有这样一个实体: @Entity @Table(name = "QUESTION_GROUP_TEXT") @NamedQueries({ @NamedQuery( name = EntityUtils.NamedQuery.UPDATE_QUESTION_GROUP_TEXT, query = "UPDATE QuestionGroupText T SET T.localizedText.content = :c

我有这样一个实体:

@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

}
此查询:
updatequestiongrouptext T SET T.localizedText.content=:content其中T.generatedId=:generatedId
不起作用,它抛出:

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

查询的这一部分一定有问题:
T.localizedText.content
,是否有任何方法可以更改它以使其正常工作?

在我看来,您正在尝试更新此表中的外键


我认为正确的方法是更新本地化文本

属性localizedText是实体localizedText表的外键

您的查询尝试将:content(无论是什么类型)设置为外键列。这是行不通的。是否定义了表LocalizedText

您可以做什么:

  • 为属性localizedText设置新ID
  • 或使用内容更新表LocalizedText
  • 请注意:需要Id时,必须在QuestionGroupText内设置@Id注释


    generatedId seams是正确的位置

    我能够重写我需要的查询:

    UPDATE LocalizedText L SET L.content = :content WHERE EXISTS (SELECT T FROM QuestionGroupText T WHERE T.localizedText.id = L.id AND T.generatedId = :generatedId)