【发布时间】:2014-05-30 07:12:38
【问题描述】:
我有一个MySQL 表,其中属性workingDays 的dataType 是SET。像这样:
CREATE TABLE IF NOT EXISTS `course` (
`courseId` int(11) NOT NULL AUTO_INCREMENT,
`courseName` varchar(255) NOT NULL DEFAULT '0',
`courseDescription` varchar(255) DEFAULT NULL,
`courseDuration` int(11) DEFAULT NULL,
`courseBatchSize` int(11) NOT NULL DEFAULT '0',
`courseEnrolmentDate` date DEFAULT NULL,
`workingDays` set('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') DEFAULT NULL,
`courseFee` float DEFAULT NULL,
`isScholarshipAvailable` enum('Y','N') DEFAULT NULL,
`scholarshipCriteria` varchar(255) DEFAULT NULL,
`scholarshipExamDate` date DEFAULT NULL,
`successRate` tinyint(4) DEFAULT NULL,
`rating` tinyint(4) DEFAULT NULL,
`otherInfo` varchar(255) DEFAULT NULL,
`courseDiscount` float DEFAULT NULL,
`institute` int(11) DEFAULT NULL,
`exam` int(11) DEFAULT NULL,
PRIMARY KEY (`courseId`),
KEY `FK_INS` (`institute`),
KEY `FK_EX` (`exam`),
CONSTRAINT `FK_EX` FOREIGN KEY (`exam`) REFERENCES `exam` (`examId`),
CONSTRAINT `FK_INS` FOREIGN KEY (`institute`) REFERENCES `institute` (`instituteId`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 COMMENT='contains course info';
现在我想相应地使用jpa 注释映射pojo。目前我正在这样做
@Column(name = "workingDays", nullable = false, unique = false)
@Type(type="org.hibernate.type.settype")
private Set<String> workingDays;
注解@Column 来自javax.persistence 包。使用来自 hibernate 包的 @Type 注释我收到一个错误
Caused by: java.lang.ClassNotFoundException: org.hibernate.type.settype
我的 pom.xml 文件添加了以下依赖项
<!-- MySQL database driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.5.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.4.Final</version>
</dependency>
<!-- Hibernate library dependecy start -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
<version>2.7.7</version>
</dependency>
<!-- Hibernate library dependecy end -->
我不确定如何解决此问题。映射到MySQL 数据库中的集合的任何见解或其他解决方法都会有所帮助。
编辑:还建议我是否可以在不使用 SET 的情况下将工作日属性存储在数据库中。此工作日属性适用于特定的公司类,我需要向最终用户显示该公司的工作日。关于数据类型的建议也会很有帮助。
谢谢。
【问题讨论】:
-
是 org.hibernate.type.SetType 不是 org.hibernate.type.settype
-
谢谢。但是,现在我收到此错误原因:org.hibernate.MappingException:无法实例化类型:org.hibernate.type.SetType 您能否提供一个如何使用此注释的示例?我对休眠很陌生
标签: java mysql spring hibernate jpa