0
我正在開發一個小型的JAVA項目來改進我的密碼工作。爲此,我使用H2數據庫將數據和Spring數據JPA存儲爲OR映射器。所有的DML操作都可以正常工作,但我不想讓用戶從數據庫中刪除密碼。爲此,我在名爲DML_ART的Bean中添加一個字段。 DML_ART是一個字符串字段,它是行的狀態。例如,如果用戶在刪除時單擊JSF GUI,則該標誌將設置爲「DELETE」。Spring Data JPA過濾器有自己查詢的子類中的數據
在此行忽略的數據負載上。 SQL查詢適用於DBPasswordEntity,但子類也按照相同的條件過濾。
但是書面聲明並不重要。我不知道爲什麼。
DBPasswordEntity.java
@Entity
@Table(name = "PasswordEntity",schema = "pwdmanager")
@PrimaryKeyJoinColumn(name = "password_id", referencedColumnName = "id")
@Getter
@Setter
public class DBPasswordEntity extends DBMetaDataEntity implements Serializable {
@Basic
@Column(name = "PASSWORD", nullable = false, length = 4000)
private String password;
@OneToMany(fetch = FetchType.EAGER,cascade = ALL, mappedBy = "password")
private Set<DBExtendEntity> extend;
@Transient
public void addExtend(DBExtendEntity ex)
{
if(extend == null)
{
extend = new LinkedHashSet<>();
}
extend.add(ex);
}
}
DBExtendEntity.java
@Entity
@Table(name = "ExtendEntity",schema = "pwdmanager")
@PrimaryKeyJoinColumn(name = "extend_id", referencedColumnName = "id")
@Getter
@Setter
public class DBExtendEntity extends DBMetaDataEntity implements Serializable{
@Basic
@Column(name = "NAME", nullable = false, length = 255)
private String name;
@ManyToOne(optional = false)
@JoinColumn(name = "password", referencedColumnName = "Password_ID")
private DBPasswordEntity password;
}
DBMetaDataEntity
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "pwd_type")
@Table(name = "MetaDataEntity",schema = "pwdmanager")
@Data
public abstract class DBMetaDataEntity {
@Id
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Integer id;
@Basic
@Column(name = "DML_ART", nullable = false)
private String dml_art ="INSERT";
}
SQL-過濾 - 操作
@Transactional
public interface PasswordRepository extends JpaRepository<DBPasswordEntity,String> {
@Query(value="SELECT pwd FROM DBPasswordEntity pwd WHERE pwd.dml_art <> 'DELETE' AND pwd.extend.id IN (SELECT ext.id FROM DBExtendEntity ext where ext.dml_art <> 'DELETE')")
List<DBPasswordEntity> findAll_DML_ART();
}
雖然你的答案是100%正確的,它也有可能成爲100%無用 如果該鏈接被移動,更改合併到另一個或主站點 剛好消失... **: - (**因此,請[編輯]您的答案,並將 鏈接中的相關步驟複製到您的答案中,從而保證您的答案爲本網站整個生命週期的100%! **; - )**您可以隨時 將您的答案的底部的鏈接作爲您的 材料的來源... –