Java Hibernate批注-无法映射日期
我有个问题。我花了一个多小时在网上搜索,但什么也没找到。。。。 我有一个简单的表类,它的元素之一是List of java.util.Date。当我运行程序时,会显示异常:Java Hibernate批注-无法映射日期,java,spring,hibernate,pojo,Java,Spring,Hibernate,Pojo,我有个问题。我花了一个多小时在网上搜索,但什么也没找到。。。。 我有一个简单的表类,它的元素之一是List of java.util.Date。当我运行程序时,会显示异常: > org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany > targeting an unmapped class: > com.model.Time.timetable[java.util.Date]. 我的配置
> org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany
> targeting an unmapped class:
> com.model.Time.timetable[java.util.Date].
我的配置文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- Assume test is the database name -->
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3036/test
</property>
<property name="hibernate.connection.username">
root
</property>
<property name="hbm2ddl.auto">create</property>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<mapping class="com.model.Cinema" />
<mapping class="com.model.Time" />
</session-factory>
</hibernate-configuration>
org.hibernate.dialogue.mysqldialogue
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3036/test
根
创造
假的
org.hibernate.dialogue.mysqldialogue
真的
我的班级:
package com.model;
import static javax.persistence.GenerationType.IDENTITY;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import info.talacha.filmweb.models.Movie;
@Entity
@Table(name = "Time")
public class Time implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id", unique = true, nullable = false)
private int id;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "time_id")
private List<Date> timetable;
@Column(name = "movie")
private Movie movie;
@Column(name = "dubbing")
private boolean dubbing;
@Column(name = "subtitles")
private boolean subtitles;
@Column(name = "threeDimensions")
private boolean threeDimensions;
public Time(){
timetable = new ArrayList<Date>();
dubbing= false;
subtitles = false;
threeDimensions = false;
movie = new Movie();
}
public Time(int id, List<Date> timetable, Movie movie, boolean dubbing, boolean subtitles, boolean is3dMovie) {
super();
this.id = id;
this.timetable = timetable;
this.movie = movie;
this.dubbing = dubbing;
this.subtitles = subtitles;
threeDimensions = is3dMovie;
}
public boolean isThreeDimensions() {
return threeDimensions;
}
public void setThreeDimensions(boolean threeDimensions) {
this.threeDimensions = threeDimensions;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Movie getMovie() {
return movie;
}
public void setMovie(Movie movie) {
this.movie = movie;
}
public Time(List<Date> timetable, Movie movie,boolean dubbing, boolean subtitles,boolean is3D) {
this.timetable = timetable;
this.dubbing = dubbing;
this.subtitles = subtitles;
this.movie = movie;
this.threeDimensions = is3D;
}
public List<Date> getTimetable() {
return timetable;
}
public void setTimetable(List<Date> timetable) {
this.timetable = timetable;
}
public boolean isDubbing() {
return dubbing;
}
public void setDubbing(boolean dubbing) {
this.dubbing = dubbing;
}
public boolean isSubtitles() {
return subtitles;
}
public void setSubtitles(boolean subtitles) {
this.subtitles = subtitles;
}
@Override
public String toString() {
return "Time [timetable=" + timetable + ", movie=" + movie + ", dubbing=" + dubbing + ", subtitles="
+ subtitles + ", is3DMovie=" + threeDimensions + "]";
}
}
package.com.model;
导入静态javax.persistence.GenerationType.IDENTITY;
导入java.io.Serializable;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.List;
导入javax.persistence.CascadeType;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.FetchType;
导入javax.persistence.GeneratedValue;
导入javax.persistence.Id;
导入javax.persistence.JoinColumn;
导入javax.persistence.OneToMany;
导入javax.persistence.Table;
导入javax.persistence.Temporal;
导入javax.persistence.TemporalType;
导入info.talacha.filmweb.models.Movie;
@实体
@表(name=“Time”)
公共类时间实现可序列化{
/**
*
*/
私有静态最终长serialVersionUID=1L;
@身份证
@生成值(策略=标识)
@列(name=“id”,unique=true,nullable=false)
私有int-id;
@OneToMany(级联=级联类型.ALL)
@JoinColumn(name=“time\u id”)
私人名单时间表;
@列(name=“movie”)
私人电影;
@列(name=“配音”)
私有布尔配音;
@列(name=“subtitles”)
私有布尔字幕;
@列(名称=“三维”)
私有布尔三维;
公共时间(){
时间表=新的ArrayList();
配音=假;
字幕=假;
三维=假;
电影=新电影();
}
公共时间(int id、列表时间表、电影、布尔配音、布尔字幕、布尔IS3DMONIVE){
超级();
this.id=id;
这个.时间表=时间表;
这部电影=电影;
this.dubbing=配音;
this.subtitles=字幕;
三维=三维电影;
}
公共布尔值isThreeDimensions(){
回归三维;
}
公共空间集合三维(布尔三维){
这个。三维=三维;
}
公共int getId(){
返回id;
}
公共无效集合id(内部id){
this.id=id;
}
公共电影{
回归电影;
}
公共电影(电影){
这部电影=电影;
}
公共时间(列表时间表、电影、布尔配音、布尔字幕、布尔is3D){
这个.时间表=时间表;
this.dubbing=配音;
this.subtitles=字幕;
这部电影=电影;
这个.三维=是三维的;
}
公共列表getTimetable(){
返回时间表;
}
公共交通时刻表(列表时刻表){
这个.时间表=时间表;
}
公共布尔isDubbing(){
返回配音;
}
公共无效集复制(布尔复制){
this.dubbing=配音;
}
公共布尔值isSubtitles(){
返回字幕;
}
公共无效集合子标题(布尔子标题){
this.subtitles=字幕;
}
@凌驾
公共字符串toString(){
return“Time[timeline=“+timeline+”,movie=“+movie+”,dubbing=“+dubbing+”,subtitles=”
+字幕+”,IS3DMONIVE=“+三维+”];
}
}
这种映射方式(oneToMany)在我将其用于不同类型时非常有效。。。我不知道怎么了。我试了几次,但都没用。我将感谢你的帮助 尝试java.sql.Date中的Date Attribute来定义Time类的每个日期属性
再见。OneToMany用于创建两个实体之间的关联
java.util.Date
不是一个实体。这是一种基本类型。您需要的是。尝试使用@Temporal注释,如下所示:
@Temporal(value = TemporalType.TIMESTAMP)
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "time_id")
private List<Date> timetable;
@Temporal(value=TemporalType.TIMESTAMP)
@OneToMany(级联=级联类型.ALL)
@JoinColumn(name=“time\u id”)
私人名单时间表;