我正在使用 Java EE JSP/EJB3,但在实现表之间的关系时遇到问题。
作为解释我的问题的测试示例,我想出了一个汽车模型和一个品牌关系。在此 Web 应用程序中,用户首先创建品牌。然后创造汽车,因为没有一个或多个品牌就不可能存在汽车。一个品牌可以拥有许多汽车,而汽车可以属于多个品牌。此外,我希望从 Brand 我可以访问像以下 brand.cars 这样的汽车,从 Cars 访问像 car.brands 这样的品牌。而这一切都是由 Car 驱动的,因为它是最后创建的。
我不知道上述推理是否是实现这一点的最佳方式。这个想法是能够以更少的问题访问两种方式。
public class Brand implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private long id;
@Column(name="brand_name")
private String brand_name;
@ManyToMany(mappedBy="cars")
private List<Car> cars;
}
以下是汽车实体 bean:
public class Car implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private long id;
@JoinTable(name = "CarBrand",
joinColumns =
@JoinColumn(name = "CAR_ID", referencedColumnName = "id"),
inverseJoinColumns =
@JoinColumn(name = "BRAND_ID", referencedColumnName = "id"))
private List<Brand> brands;
}
我设法创建了一个品牌,但是当我尝试创建具有特定品牌的汽车时,它给了我以下信息
WARNING: Local Exception Stack:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'SQL121201171525140' defined on 'BRAND'.
Error Code: -1
Call: INSERT INTO Brand
我究竟做错了什么 ?