【发布时间】:2014-01-27 11:41:17
【问题描述】:
无法正常工作。我正在创建一个带有锦标赛的站点,用户可以注册该站点。比赛将有一份注册会员名单。它不包含用户对象,只是用户电子邮件地址,无论如何这都是用户表的键。我想以这样一种方式存储数组列表,即我将拥有多个锦标赛 ID 副本,但每个锦标赛 ID 只有一个用户名实例。
例如 T_ID 用户名 1 汤姆 1 迈克 1约翰 2汤姆 2克里斯 2 蒂米 3 蒂米 3克里斯
等
这是表的 SQL。
DROP TABLE IF EXISTS `mtc`.`tournament` ;
CREATE TABLE IF NOT EXISTS `mtc`.`tournament` (
`id` INT NOT NULL,
`tournamentName` VARCHAR(100) NULL,
`tournamentGender` VARCHAR(45) NULL,
`tournamentType` VARCHAR(45) NULL,
`tournamentCategory` VARCHAR(45) NULL,
`tournamentStyle` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mtc`.`tournament_eligible`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mtc`.`tournament_eligible` ;
CREATE TABLE IF NOT EXISTS `mtc`.`tournament_eligible` (
`id` INT NOT NULL,
`username` VARCHAR(45) NULL,
PRIMARY KEY (`id`),
CONSTRAINT `fk_tournament_eligible_tournament1`
FOREIGN KEY (`id`)
REFERENCES `mtc`.`tournament` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
我有两个这样的课程。
Tournament.java
@Entity
@Table(name = "tournament")
public class Tournament implements Event {
@Id
@GeneratedValue
private int id;
@OneToMany
@JoinColumn(name = "id")
private List<User> eligible; // Contains a list of eligible members
@Size(min = 5, max = 45, message = "Tournament Name must be between 5 and 60 characters", groups = {
PersistenceValidationGroup.class, FormValidationGroup.class })
private String tournamentName; // Specified the name of the tournament
private String tournamentGender = "MIXED"; // Specifies where a tournament
// is M(ale), F(emale) or MIXED;
private String tournamentType = "S"; // Specifies S(ingles) or D(oubles)
private String tournamentCategory = "O"; // Specifies Member_Type to be
// S(enior) only, J(unior) only,
// or O(pen) Tournament
private String tournamentStyle = "L"; // Specfies type of Tournament to be
// (L)adder/(L)eague, (B)ucket or
// (G)roup - Probably change this to
// a class later on.
public Tournament() {
this.eligible = new ArrayList<User>();
}
// getters and setters
寄存器类
@Entity
@Table(name="tournament_eligible")
public class Registered {
@Id
@Column(name="id")
private int tournamentID;
@Column(name="username")
private String username;
@OneToMany(mappedBy="tournament")
private List<String> registered;
// getter and setters
我使用的是正确的 javax.* 注释,而不是 Hibernate 注释。
当前错误:原因:org.hibernate.AnnotationException:@OneToOne 或 @ManyToOne on events.tournaments.Tournament.eligible 引用了一个未知实体:java.util.List
我确实设置了 Hibernate 配置以查看带有注册实体的包。
<beans profile="production">
<jee:jndi-lookup jndi-name="jdbc/mtc" id="dataSource"
expected-type="javax.sql.DataSource">
</jee:jndi-lookup>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
</props>
</property>
<property name="packagesToScan">
<list>
<value>users</value>
<value>dao</value>
<value>events.tournaments</value>
</list>
</property>
</bean>
<bean id="exceptionTranslator"
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor">
</bean>
</beans>
【问题讨论】:
标签: hibernate spring-mvc arraylist persistence