EmployeeDO.ktPFUserDO (user account) to financial, HR, and time-tracking data. Mapped to table t_fibu_employee. Implements Comparable (by user lastname/firstname) and DisplayNameCapable (delegates to user's fullname). Declared open for Hibernate proxy support and test mocking (VacationServiceTest).| Field | DB Column | Type | Notes |
|---|---|---|---|
user | user_id | PFUserDO (ManyToOne, LAZY) | Unique constraint — one user per employee. Hibernate Search indexed embedded (depth 1). Serialized as ID-only. |
kost1 | kost1_id | Kost1DO (ManyToOne, LAZY) | Cost center for monthly reporting. Nullable. |
status | — | EmployeeStatus? (@Transient) | NOT persisted — set by EmployeeDao/EmployeeCache from ValidSinceAttr. Internal setter. |
annualLeave | — | BigDecimal? (@Transient) | NOT persisted — annual leave days from ValidSinceAttr. Internal setter. |
weeklyWorkingHours | — | BigDecimal? (@Transient) | NOT persisted — weekly hours from ValidSinceAttr. Internal setter. |
position | position_text | String (max 244) | Job title / position text. Full-text indexed. |
eintrittsDatum | eintritt | LocalDate? | Entry/start date. Generic field indexed. |
austrittsDatum | austritt | LocalDate? | Exit/quit date. Generic field indexed. |
abteilung | abteilung | String (max 255) | Division/department. Full-text indexed. |
staffNumber | staff_number | String (max 255) | Staff/personnel number. Alphanumeric sort. |
comment | comment | String | Length defined by Constants.COMMENT_LENGTH. |
EmployeeDO_FindByUserId — from EmployeeDO where user.id=:userIdEmployeeDO_GetEmployeeIdByUserId — select id from EmployeeDO where user.id=:userIdEmployeeDO_FindByLastnameAndFirstname — from EmployeeDO where user.lastname=:lastname and user.firstname=:firstnamedisplayName — Delegates to user.getFullname(). Implements DisplayNameCapable.active — Returns true if: not deleted, entry date is not in the future, and exit date is not in the past. Based on LocalDate.now().equals() — Based on ID equality. Other types return false.hashCode() — 31 * id.hashCode() if id is non-null; otherwise delegates to super.compareTo() — Compares by user.lastname then user.firstname using StringUtils.compare(). Null users sort first.copyValuesFrom() override excludes timeableAttributes from copying. Logs a warning that timeable-attribute copy is not yet implemented.
868d6abb7 2025 -> 2026 28efde264 Employee: weeklyWorkingHours now as time-dependent attr. 63081666f Source file headers: 2024-> 2025. 0237d5eba Json serialization refactored: IdOnlySerializer and IdsOnlySerializer introduced. c8f8ed935 Declared all entities as FetchType.LAZY (was EAGER). 4c04cfd65 MAJOR-CHANGE! Migration of integer id's to Long id's 8bd740775 Employee: bank account, birthday, gender and address removed. a5a0e2b40 EmployeeDO.status will be set by timeableAttribute "status" a0affa511 EmployeeDO.active 6712fba40 Employee.urlaubstage -> timed attribute for annual leave days. f070a11e8 Employee.birthday/eintrittsdatum/austrittsdatum: Date -> LocalDate 8675a1dbe Declared all Kotlin JPA entities and their properties as open. ...