JPQL Requête de mise à Jour
J'ai une entité comme ceci:
@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
}
Cette requête: UPDATE QuestionGroupText T SET T.localizedText.content = :content WHERE T.generatedId = :generatedId
ne fonctionne pas, il lance:
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
Il doit y avoir quelque chose de mal avec cette partie de la requête: T.localizedText.content
, est il possible que je peux le modifier pour faire ce travail?
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure de réécrire la requête que j'avais besoin:
Votre attribut localizedText est une foreignkey à votre Table pour l'Entité LocalizedText
Votre requête tente de définir :le contenu (quel que soit le type de cette peut-être) à une colonne de clé étrangère. Cela ne fonctionne pas. Avez-vous des la table LocalizedText défini?
Ce que vous pouvez faire:
Veuillez noter: Vous disposez d'annotation @Id à l'intérieur de QuestionGroupText quand vous voulez un Id.
generatedId coutures pour être au bon endroit
Son me semble que vous essayez de mettre à jour une clé étrangère de la table.
Je pense que la bonne façon est de mettre à jour LocalizedText à la place.