我正在使用Java EE JSP / EJB3,我在实现表之间的关系时遇到了问题。
作为解释我问题的一个测试例子,我想出了一个汽车模型和一个品牌关系。在此Web应用程序中,用户首先创建品牌。然后创造汽车,因为如果没有一个或多个品牌,汽车就不可能存在。一个品牌可以有很多车,一辆车可以归属于许多品牌。此外,我希望Brand I可以像以下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
我做错了什么?