首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angular中的外键

Angular中的外键
EN

Stack Overflow用户
提问于 2018-12-17 01:03:59
回答 1查看 0关注 0票数 0

我有两个表,flight并且ticket和类FlightTicket。One Flight可以有很多门票,所以有一个外键flight_id。我想在我的数据库中写下Ticket flight_id所选的表格Flight

flight_id在这里是1

这是我的数据库:

在此处输入图像描述
在此处输入图像描述

http://localhost:8080/api/tickets我看不到我的外键flightId,我不确定这是否正常。顺便说一句,我将这些数据直接添加到我的数据库(而不是通过我的网络应用程序)。

在此处输入图像描述
在此处输入图像描述

在这里,我可以添加namesurname我的桌前Ticket通过我的web应用程序,但我也想补充flightId像外键我的表Ticket。我flight_id在这里是1。http://localhost:4200/ticket/1

在此处输入图像描述
在此处输入图像描述

我发布了这样的JSON,但收到错误 400 - Bad request

在此处输入图像描述
在此处输入图像描述
在此处输入图像描述
在此处输入图像描述

这是我的完整错误:

在此处输入图像描述
在此处输入图像描述

创建-ticket.component.html:

代码语言:javascript
复制
<div [hidden]="submitted" style="width: 300px;">
<form (ngSubmit)="onSubmit()">

 <div class="form-group">
  <label for="name">Name</label>
  <input type="text" class="form-control" id="name" required [(ngModel)]="ticket.name" name="name">
 </div>

 <div class="form-group">
  <label for="surname">Surname</label>
  <input type="text" class="form-control" id="surname" required [(ngModel)]="ticket.surname" name="surname">
 </div>

 <button type="submit" class="btn btn-success">Submit</button>
 </form>
 </div>

 <div [hidden]="!submitted">
 <h4>Submitted!</h4>
 <button class="btn btn-success" (click)="newTicket()">Submitted</button>

创建-ticket.component.ts:

代码语言:javascript
复制
export class CreateTicketComponent implements OnInit {
ticket: Ticket = new Ticket();
flight: Flight = new Flight();
submitted = false;
flightId: number;
constructor(private ticketService: TicketService, private flightService: FlightService,
          private router: Router, private route: ActivatedRoute) {
 }
 ngOnInit() {
 this.route.params.subscribe(params => { this.flightId = params['flightId']; });
 this.flightService.getFlight(this.flightId).subscribe(t => this.flight = t);
 }

 newTicket(): void {
 this.submitted = false;
 }

 save() {
 this.ticket.flightId = this.flight.flightId;
 this.ticketService.createTicket(this.ticket)
  .subscribe(data => console.log(data), error => console.log(error));
 this.ticket = new Ticket();
 }

 onSubmit() {
 this.submitted = true;
 this.save();
 }
 }

create.service.ts:

代码语言:javascript
复制
export class TicketService {

private baseUrl = 'http://localhost:8080/api/tickets';

constructor(private http: HttpClient) {
}
createTicket(ticket: Object): Observable<Object> {
return this.http.post(`${this.baseUrl}` + `/create`, ticket);
}
}

ticket.ts:

代码语言:javascript
复制
export class Ticket {
ticketId: number;
place: string;
customerId: number;
flightId: number;
name: string;
surname: string;
}

flight.ts:

代码语言:javascript
复制
import {Time} from '@angular/common';

export class Flight {
flightId: number;
departureCity: string;
destinationCity: string;
price: number;
flightDuration: number;
transferNumber: number;
departureDate: Date;
departureTime: Time;
tickets: Ticket[];
}
export class Ticket {
ticketId: number;
place: number;
customerId: number;
flightId: number;
}

Ticket的Spring Boot 课程。也许我在这里private Flight flight;遇到了问题:但是当我改变它时,private int flight;我得到了一个新的错误@OneToOne or @ManyToOne on Ticket.flight references an unknown entity: int

代码语言:javascript
复制
@Entity
@Table(name = "ticket")
public class Ticket {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int ticketId;

@Column(name = "place")
private int place;

@Column(name = "name")
private String name;

@Column(name = "surname")
private String surname;

@ManyToOne
@JoinColumn(name = "flightId")
@JsonBackReference("flight")
private Flight flight;

public Ticket() {
}
EN

回答 1

Stack Overflow用户

发布于 2018-12-17 10:22:11

门票上没有flightId。只是映射ManyToOne不能解决这个问题。你仍然需要一个列flightId

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档