Java Hibernate是否在查询中避免可为空的唯一字段?

Java Hibernate是否在查询中避免可为空的唯一字段?,java,hibernate,Java,Hibernate,我有一个hibernate pojo类,它在@UniqueConstraint unique中指定了3个字段,其中一个字段为null=true 当我尝试使用session.updatepojo更新条目时,它会更新数据库中与2个不可为null的字段匹配的所有条目,所以hibernate在查询时会避免为null的字段吗?还是有什么我应该知道的 编辑:添加了类 在复合键中似乎没有任何这样的选项可以有一个可为空的字段,因此我不得不在表中添加一个整数自动递增主键,并在@UniqueConstraint中保

我有一个hibernate pojo类,它在@UniqueConstraint unique中指定了3个字段,其中一个字段为null=true

当我尝试使用session.updatepojo更新条目时,它会更新数据库中与2个不可为null的字段匹配的所有条目,所以hibernate在查询时会避免为null的字段吗?还是有什么我应该知道的

编辑:添加了类


在复合键中似乎没有任何这样的选项可以有一个可为空的字段,因此我不得不在表中添加一个整数自动递增主键,并在@UniqueConstraint中保留service、billingItem和serviceType字段


我还可以采用另一个选项,在某些情况下是可能的,即添加一个serviceType,它基本上被视为所有条目,当serviceType为null时,它将应用于所有serviceType。而不是对serviceType使用null指向这个条目,这样我们就可以有PK,而不需要将serviceType设置为可为null的字段

你需要发布你的对象结构,我们无法在不知道细节的情况下回答为什么会发生这种情况。在你的实体类中有两个@Id注释,它们是forienn键..这是你的主键I添加类,我们正在使用,谢谢!顺便说一句,我尝试将@Id添加到serviceType字段,该字段必须为null,然后代码在where条件下的更新查询中考虑该字段,但如果我添加@Id,则该字段不能为null,对吗?@Lucky,我希望在更新表详细信息中的条目时考虑服务、billingItem和serviceType,但serviceType必须为null,知道吗?
@Entity
@Table (name = "details",
uniqueConstraints = {@UniqueConstraint(columnNames = {"service_id", "billing_item_id", "service_type_id"}, name="UK_name_it")}      
    )
public class Detail implements Serializable {

    @ManyToOne
    @JoinColumn(name = "service_id")
    @ForeignKey(name = "FK_name2")
    @Id
    private Service service;

    @ManyToOne
    @JoinColumn(name="billing_item_id")
    @ForeignKey(name = "FK_name3")
    @Id
    private BillingItem billingItem;

    @ManyToOne
    @JoinColumn(name="currency_id")
    @ForeignKey(name = "FK_name4")
    private Currency currency;

    @ManyToOne
    @JoinColumn(name="service_type_id")
    @ForeignKey(name = "FK_name5")
    private ServiceType serviceType;

    @Column(name = "completed", nullable = false)
    private boolean completed;
}