我的Employees 需要有一個角色,以后可以用其他屬性擴展。因此,我想將它們保留為單獨的物體。
在Employee課堂上,我參考了這樣的角色:
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "role_id", referencedColumnName = "id", nullable = false)
private EmployeeRole role;
而EmployeeRole該類只有一個數字id屬性和一個描述為String.
目標
每當我創建型別為 的物體時Employee,我只想指定description角色的 ,而??不是其id。如果具有這樣的角色description已經存在,則它id是用作關系role_id上的外鍵的角色Employee。
否則,將創建一個新角色。
當前行為
新EmployeeRole為每個創建Employee。如果我將 設定description為唯一的:
@Column(unique = true)
private String description;
Employee如果具有指定描述的角色已存在,則不會創建an 。
解決方案?
一種可能的解決方案是檢查EmployeeRole具有此描述的是否已經存在,如果不存在則創建它,并且在這兩種情況下都利用它id來將新的映射Employee到它。
老實說,我不知道如何在類宣告中做到這一點。任何建議表示贊賞。
uj5u.com熱心網友回復:
也許這不是您要查找的內容,但是您可以通過描述查詢 EmployeeRole 并為您的雇主重用該物體(如果存在)或創建一個新物體(如果不存在)。如果您使用 JpaRepository,您可以在界面中撰寫這樣的方法,以通過描述列創建查詢:
EmployeeRole findFirstByDescription(String description);
從技術上講,您可以只命名該方法:
EmployeeRole findByDescription(String description);
但是,如果您出于某種原因不小心創建了多個具有相同描述的 EmployeeRoles,那么它就不會起作用,因此通過使用“findFirst..”可以消除它以防萬一。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379055.html
上一篇:是否有方法的注釋,可以在JavaSpring中用作觸發器?
下一篇:Thymeleaf資料庫更新
