Java 如何使uniqe在实体中归档,但相对多个实体? 公共类任务{ @身份证 @GeneratedValue(策略=GenerationType.AUTO) @列(nullable=false) 私有UUID; @列(nullable=false) 私有字符串标题; @JoinColumn(name=“user\u id”,referencedColumnName=“id”) @多通(可选=假) 私人用户; } 公共类用户{ @身份证 @GeneratedValue(策略=GenerationType.AUTO) @列(nullable=false) 私有UUID; @OneToMany(mappedBy=“user”,cascade=CascadeType.ALL) 私有列表任务=新建ArrayList(); }

Java 如何使uniqe在实体中归档,但相对多个实体? 公共类任务{ @身份证 @GeneratedValue(策略=GenerationType.AUTO) @列(nullable=false) 私有UUID; @列(nullable=false) 私有字符串标题; @JoinColumn(name=“user\u id”,referencedColumnName=“id”) @多通(可选=假) 私人用户; } 公共类用户{ @身份证 @GeneratedValue(策略=GenerationType.AUTO) @列(nullable=false) 私有UUID; @OneToMany(mappedBy=“user”,cascade=CascadeType.ALL) 私有列表任务=新建ArrayList(); },java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我想使标题唯一,但不在表的队列中,我需要为用户提供唯一的标题。用户的任务不应与此用户的其他任务的标题相同。因此,您要寻找的组合是,基于taskTitle+用户的组合,任务应是唯一的:您必须将其添加到任务表中:您可以使用注释进行此操作 public class Task { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(nullable = false) private UUID id; @Column(nullable

我想使标题唯一,但不在表的队列中,我需要为用户提供唯一的标题。用户的任务不应与此用户的其他任务的标题相同。

因此,您要寻找的组合是,基于taskTitle+用户的组合,任务应是唯一的:您必须将其添加到
任务
表中:您可以使用注释进行此操作

public class Task {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false)
private UUID id;

@Column(nullable = false)
private String title;

@JoinColumn(name = "user_id", referencedColumnName = "id")
@ManyToOne(optional = false)
private User user;

}

public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false)
private UUID id;

@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<Task> tasks = new ArrayList<>();

}
这样,您将永远不会在
任务
表中获得具有相同标题+用户的双行

 @Table(
    name="UNQ_CONSTRAINT_NAME", 
    uniqueConstraints=
        @UniqueConstraint(columnNames={"title", "user_id"})
 )
 public class Task{
     //...
 }