更新 它报告例外
引起:org.hibernate.MappingException:无法确定类型 for:java.util.List,at table:bus_station,for columns: [org.hibernate.mapping.Column(巴士线路)]
我的实体和表格是
@Entity
@Table(name="bus_line")
@NamedQuery(name="BusLine.findAll", query="SELECT b FROM BusLine b")
public class BusLine implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(unique=true, nullable=false)
private Long id;
@Column(nullable=false)
private Long firstExpressTime;
@Column(nullable=false)
private Long lastExpressTime;
private Integer lineDirection;
@Column(nullable=false, length=10)
private String lineName;
@Column(nullable=false)
private Long originatingStationID;
@Column(nullable=false, length=10)
private String originatingStationName;
@Column(nullable=false)
private Long terminusID;
@Column(nullable=false, length=10)
private String terminusName;
@ManyToMany(mappedBy="busLines")
private List<BusStation> busStations = new ArrayList<BusStation>();
omit getter and setter method
}
@Entity
@Table(name="bus_station")
@NamedQuery(name="BusStation.findAll", query="SELECT b FROM BusStation b")
public class BusStation implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(unique=true, nullable=false)
private Long id;
@Column(nullable=false)
private Double stationLat;
@Column(nullable=false)
private Double stationLng;
@Column(nullable=false, length=20)
private String stationName;
@JoinTable(name="bus_line_to_station",joinColumns = @JoinColumn(name="stationID"),
inverseJoinColumns=@JoinColumn(name="lineID"))
private List<BusLine> busLines = new ArrayList<BusLine>();
omit setter and getter method
}
CREATE TABLE `bus_line` (
`id` bigint(20) NOT NULL AUTO_INCREMENT ,
`lineName` varchar(10) NOT NULL ,
`originatingStationName` varchar(10) NOT NULL ,
`originatingStationID` bigint(20) NOT NULL ,
`terminusID` bigint(20) NOT NULL ,
`terminusName` varchar(10) NOT NULL ,
`firstExpressTime` datetime NOT NULL ,
`lastExpressTime` datetime NOT NULL ,
`lineDirection` int(3) DEFAULT '1' ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `bus_line_to_station` (
`id` bigint(20) NOT NULL AUTO_INCREMENT ,
`lineID` bigint(20) NOT NULL ,
`stationID` bigint(20) NOT NULL ,
`stationOrder` int(3) NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `bus_station` (
`id` bigint(20) NOT NULL AUTO_INCREMENT ,
`stationName` varchar(20) NOT NULL ,
`stationLng` double NOT NULL ,
`stationLat` double NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
答案 0 :(得分:1)
您可以使用@ManyToMany
来映射BusStation
和BusLine
之间的关系
@Entity
public class BusStation {
...
@ManyToMany
@JoinTable(name = "busStation_to_busLine", joinColumns = @JoinColumn(name = "busStation_id"),
inverseJoinColumns = @JoinColumn(name = "busLine_id")
private List<BusLine> busLines = new ArrayList<BusLine>();
...
}
@Entity
public class BusLine {
...
@ManyToMany(mappedBy = "busLines")
private List<BusStation> busStations = new ArrayList<BusStation>();
...
}