RentalItem.java
package io.extact.rms.application.domain;
import static jakarta.persistence.AccessType.*;
import jakarta.persistence.Access;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import io.extact.rms.application.domain.constraint.ItemName;
import io.extact.rms.application.domain.constraint.RmsId;
import io.extact.rms.application.domain.constraint.SerialNo;
import io.extact.rms.application.domain.constraint.ValidationGroups.Update;
@Access(FIELD)
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor(staticName = "of")
public class RentalItem implements Transformable, IdAccessable {
    /** id */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @RmsId(groups = Update.class)
    private Integer id;
    /** シリアル番号 */
    @SerialNo
    private String serialNo;
    /** 品名 */
    @ItemName
    private String itemName;
    public static RentalItem ofTransient(String serialNo, String itemName) {
        return of(null, serialNo, itemName);
    }
    // ----------------------------------------------------- override methods
    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
    }
}