Workday existiert wie folgt
public class Workday implements Serializable{
private long idWorkDay;
private Date start;
private Date end;
private List<Workbreak> workBreaks;
private DAY_TYPE DAY_TYPE;
private long workweekID;
getter setter....
Die richtige Lösung ist natürlich, Enum in die Workday-Tabelle einzufügen ... und es wird, glaube ich, eine Menge Datenbankbelegungen reduzieren.
<insert id="insert" parameterType="workday" useGeneratedKeys="true" keyProperty="idWorkDay">
INSERT INTO workday
( start , end , workweekID , DAY_TYPE )
VALUES (
#{start},
#{end},
#{workweekID},
#{DAY_TYPE, typeHandler=org.apache.ibatis.type.EnumTypeHandler}
)
<selectKey keyProperty="idWorkDay" resultType="long" order="AFTER">
SELECT LAST_INSERT_ID();
</selectKey>
</insert>
Und jetzt löschen Sie die Tagestabelle und fügen Sie stattdessen die Aufzählung direkt in die Arbeitstagstabelle ein.
CREATE TABLE `workday` (
`idworkday` int(11) NOT NULL AUTO_INCREMENT,
`start` time DEFAULT '08:00:00',
`end` time DEFAULT '17:00:00',
`workweekID` int(11) DEFAULT NULL,
`DAY_TYPE` enum('MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY','SUNDAY') DEFAULT NULL,
PRIMARY KEY (`idworkday`),
KEY `fk_workweek_workweekID` (`workweekID`),
CONSTRAINT `fk_workweek_workweekID` FOREIGN KEY (`workweekID`) REFERENCES `workweek` (`idworkweek`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=139 DEFAULT CHARSET=utf8 ;