我用一些表创建了一个mySQL数据库,我的问题的相关问题是玩家和季节。
表季包含:
Season_id (int),seasonNumber(int),total(int), week(int), value(int), totalsell(int)
我有我的Java代码,在那里我创建了我的实体并使用anotations我确定了实体以及每个权利的主键。
以下是我的季节POJO课程的属性:
private int id;
private LinkedList<Player> keepers;
private LinkedList<Player> defs;
private LinkedList<Player> inners;
private LinkedList<Player> wings;
private LinkedList<Player> innersTreino;
private LinkedList<Player> strikers;
private LinkedList<Player> strikersTreino;
private int seasonNumber;
private LinkedList<Player> vendas;
private LinkedList<Player> sold;
private int total;
private int week;
private int value;
private int totalsell;
之后我创建了我的entitymanagerFactory和我的实体管理器,并尝试测试我是否可以填充我的数据库:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("htTeamPU");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Season test = new Season();
test.setSeasonNumber(43);
test.setTotal(5);
test.setWeek(100);
test.setValue(200);
test.setTotalsell(10);
em.persist(test);
em.getTransaction().commit();
em.close();
emf.close();
当我运行我的程序时,我有一个例外:
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'DEFS' in 'field list'
问题似乎是我的对象是9个链接的玩家列表,我没有在我的季节表中显示它们。我真的不知道如何在我的赛季表上代表链接列表来解决我的问题。
答案 0 :(得分:2)
您应该与Player和Seoson表建立多对多的关系。
对于您的一个名单;
在拥有方(Seoson)
@ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name = "seoson_keepers",
joinColumns = { @JoinColumn(name = "Seoson_id")},
inverseJoinColumns={@JoinColumn(name="Player_id")})
private List<Player> keepers;
反面(玩家)
@ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE},
mappedBy = "keepers")
private List<Seoson> seosons;
您可以在jpa here中找到有关多对多关系的更多详细信息。
根据您的设计,您必须为所有列表重复上述代码。