Java 筛选联接表中的行-Hibernate中的多对多
我试图在我的整个平台上实现一个软删除。每个表在列上都有一个Java 筛选联接表中的行-Hibernate中的多对多,java,spring,hibernate,jpa,spring-boot,Java,Spring,Hibernate,Jpa,Spring Boot,我试图在我的整个平台上实现一个软删除。每个表在列上都有一个deleted\u,用于筛选已删除的行 这包括我的文件和用户之间的连接表。我没能找到任何有用的东西。现在我的课是这样的 @Entity public class File { @ManyToMany @JoinTable( name = "file_user", joinColumns = @JoinColumn(name = "file_id", referencedColumnName
deleted\u,用于筛选已删除的行
这包括我的文件和用户之间的连接表。我没能找到任何有用的东西。现在我的课是这样的
@Entity
public class File {
@ManyToMany
@JoinTable(
name = "file_user",
joinColumns = @JoinColumn(name = "file_id", referencedColumnName = "file_id"),
inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id")
)
private List<User> users;
// Constructor and other fields
}
如果您是Hibernate
作为您的JPA提供者,那么您可以使用@Where
注释
@Entity
@Where(clause="deleted_on=1")
public class User {
@ManyToMany(mappedBy = "users")
private List<FileData> files = new ArrayList<>();
// Constructor and other fields
}
@实体
@其中(第条=“已删除”=1)
公共类用户{
@多人(mappedBy=“用户”)
私有列表文件=新的ArrayList();
//构造函数和其他字段
}
这将对用户类的所有查询应用where子句
补充说明:
您需要在所有关系中再次指定@where子句
@ManyToMany
@JoinTable(
name = "file_user",
joinColumns = @JoinColumn(name = "file_id", referencedColumnName = "file_id"),
inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id")
)
@Where(clause="deleted_on=1")
private List<User> users;
@manytomy
@可接合(
name=“文件\用户”,
joinColumns=@JoinColumn(name=“file\u id”,referencedColumnName=“file\u id”),
inverseJoinColumns=@JoinColumn(name=“user\u id”,referencedColumnName=“id”)
)
@其中(第条=“已删除”=1)
私人名单用户;
@AUT在@Where
注释中应改为@WhereJoinTable
@Entity
@Where(clause="deleted_on=1")
public class User {
@ManyToMany(mappedBy = "users")
private List<FileData> files = new ArrayList<>();
// Constructor and other fields
}
@ManyToMany
@JoinTable(
name = "file_user",
joinColumns = @JoinColumn(name = "file_id", referencedColumnName = "file_id"),
inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id")
)
@Where(clause="deleted_on=1")
private List<User> users;