如何使用postgreSQL和java eclipselink在连接表中插入数据



我的数据库中有3个表:

create table characters(
name varchar(255) primary key,
class varchar(55) NOT NULL,
race varchar(55) not null,
level int not null
);
create table users(
user_name varchar(255) primary key,
balance int not null,
first_name varchar(255) not null,
last_name varchar(255) not null,
iban varchar(255) not null,
character_slots int not null,
last_payment date not null,
months_payed int not null,
password varchar(255) not null,
banned varchar(1) not null
);
create table owns(
name varchar(255) references characters(name),
user_name varchar(255) references users(user_name)
);

可以看到,表"owned"是一个连接表。

我正在使用java eclipselink。当我在用户和字符中插入数据时,在"拥有"表中没有发生任何事情。

我不能在java中手动插入数据,因为它只显示Users.java和Characters.java类。在我的Character.java类中,我看到了这段代码,也许这会帮助你找到我需要的解决方案。

@JoinTable(name = "owns", joinColumns = {
    @JoinColumn(name = "name", referencedColumnName = "name")}, inverseJoinColumns = {
    @JoinColumn(name = "user_name", referencedColumnName = "user_name")})
@ManyToMany
private Collection<Users> usersCollection;

我在数据库中插入值的方式如下:

Characters c1 = new Characters(t_char.getText(), cb_class.getValue(), cb_race.getValue(), 1);
persist(c1);

编辑您的映射:

@JoinTable(name = "owns", joinColumns = {
@JoinColumn(name = "name", referencedColumnName = "name")}, inverseJoinColumns = {
@JoinColumn(name = "user_name", referencedColumnName = "user_name")})
@ManyToMany(mappedBy = "user")
private Collection<Users> usersCollection;

和你的"user"应该是:

@ManyToOne
@JoinTable(name = "owns", joinColumns = {
@JoinColumn(name = "name", referencedColumnName = "name")}, inverseJoinColumns = {
@JoinColumn(name = "user_name", referencedColumnName = "user_name")})
public User getUser() {
    return user;
}

最新更新