Java – how JPA adds a unique constraint on the column of the @ onetomany relationship, for example, on the user name

I have a class website representing websites and class users The site can have multiple users

class Site {

    private int site_ID;

    @OneToMany // with a join table
    private List<User> users;
    // ...
}

class User {

    private int user_ID;

    private String name;

    private String lastname;

    private String username;

    private String password;

}

I want to allow the same user name on all websites, but only one website is allowed

Site/User/username
1   /1   /username1
1   /2   /username2
2   /3   /username1

How can I do this?

Solution

Let users have Site References:

@ManyToOne(optional=false)
private Site site;

Now add the constraint to the user:

@Table(uniqueConstraints = {
    @UniqueConstraint(columnNames = { "username","site" }))
} @Entity
public class User{
// etc
}

You must also change the site mapping:

@OneToMany(mappedBy="site")
private List<User> users;
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>