Hibernate Check Annotation
10,934
Yes it is possible if @Check
is used at class level like this:
@Entity
@Check(constraints = "COL_A IS NULL OR (COL_B IS NOT NULL and COL_C IS NOT NULL)")
public class Sample {
@Column(name = "COL_A")
private Long a;
@Column(name = "COL_B")
private Long b;
@Column(name = "COL_C")
private Long c;
}
(Note that I rewrote your condition using @jarlh comment.). The constraints
clause of @Check
annotation needs to refer to the name
attribute of @Column
(it must be pure SQL).
@Check
annotation needs to be at class level because of a Hibernate bug.
Author by
blahblah
Updated on July 20, 2022Comments
-
blahblah almost 2 years
I have a table with three fields, say a, b, c. I would like to add a constraint ensuring that if a is not null, then also b and c are not null. I have done that using following SQL
ALTER TABLE sample ADD CONSTRAINT no_nulls CHECK (CASE WHEN a IS NOT NULL THEN b IS NOT NULL AND c IS NOT NULL END)
Is there a way to achieve same effect using hibernate annotation @Check?
I can't find a helpful example with that annotation, do developers tend not to use it at all?
-
blahblah over 8 yearsSuppose i have: //////////// @Column(name = "sample") private Long a; ////////// Which one should I use in check constraint? 'a' or 'sample'? I guess the question is: Is there HQL or SQL used?
-
Stefan Falk about 6 yearsApparently
@Check
can only be used once, at class level. How can we add multiple constraints? -
BrendanM over 2 yearsAny idea if this is possible, I have multiple named check constraints but no way to add them
-
Admin over 2 yearsAs it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.