org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:403)
...................
Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query
at org.hibernate.internal.AbstractSharedSessionContract.checkTransactionNeededForUpdateOperation(AbstractSharedSessionContract.java:413)
at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1668)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
...............
@Entity
public class Employe implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String prenom;
private String nom;
private String email;
private int isActif;
@Enumerated(EnumType.STRING)
private Role role;
@OneToOne(mappedBy ="employe", cascade = CascadeType.REMOVE)
Contrat contrat;
@ManyToMany( mappedBy="employes", fetch= FetchType.EAGER , cascade = {CascadeType.PERSIST })
private List<Departement> departements;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE ,CascadeType.REMOVE})
List<Mission> missions;
.........
@Entity
public class Departement implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
private Entreprise entreprise;
@OneToMany( mappedBy="departement", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private List<Mission> missions;
@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private List<Employe> employes;
@Modifying
@Query(value = "DELETE FROM departement_employes WHERE employes_id = :id ", nativeQuery = true)
void deleteEmployerDepartementsAssociations(@Param("id") int id );
员工与部门之间的关联是多对多的双向关联。
我正在尝试在删除受雇者之前删除关联
尝试以以下方式更正您的查询:
@Modifying
@Query(value = "DELETE FROM departement_employes WHERE employes_id = :id ", nativeQuery = true)
void deleteEmployerDepartementsAssociations(@Param("id") int id );
您必须在事务中包装任何数据库修改操作。看看这篇文章的例子。
因此,作为一种可能的方法,您可以通过@transactional
注释来注释您的服务方法:
@Override
@Transactional
public void deleteEmployerById(int id) {
// ...
}
我使用包对MySQL服务器运行查询 以下是连接设置 它适用于所有查询,只有查询有26个参数: 我一直收到以下错误消息: C:\myprojects\tms\node_modules\mysql2\lib\commands\commands.js:30 this.onresult(err);^ TypeError:this.onresult不是Connection.Query.Execute(C:\
如果我通过“.ASC”删除组的第二部分,但当我这样做时,数据是不正确的。它为什么要这样做,我如何修复它,并且仍然按照表1分组,除了表3之外,还要先按表1分组。 先进的谢谢! 我有时间接受完整的查询,并将表拉到一个通用表单,以便在没有客户端数据的情况下发布。我能够将模式添加到sqlfiddle中,但如果没有我使用的数据,结果可能会有所不同,而且由于字符的限制,我甚至无法将表前的100行(共7行)放入
我正在尝试使用连接获取运行查询,但我也在使用DTO投影来提高性能,但我得到了以下异常: org.hibernate.QueryException:查询指定的联接获取,但获取的关联的所有者不存在于选择列表中[FromElement{显式,不是集合联接,获取联接,获取非惰性属性,类Alias=pi,角色=returnitRest。Ereturn.productItems, tableName=prod
问题内容: 有人可以帮助我了解此查询的问题吗: 问题答案: 之所以无法使用,是因为MySQL不按照您尝试的方式在delete语句中支持连接语法。 使用: …或使用EXISTS:
我不确定是什么导致了这个例外。
摘自:https://docs.microsoft.com/en-us/azure/cosmos-db/create-graph-dotnet 我在 .wait() 部分遇到异常: 代码: