NotNull nicht funktioniert, Column(nullable = false) arbeiten
Habe ich eine Feder-Einheit mit einem Feld versehen mit @NotNull von javax.die Validierung.Einschränkungen
@Entity
public abstract class IdentifiableNamedEntity {
@NotNull
@Column(unique = true)
private String name;
}
Das Problem ist, dass wenn ein Satz einen null-Wert für das Feld name wird in der Datenbank gespeichert. Allerdings, wenn ich die Klasse wie folgt, es löst die Ausnahme aus, ich würde gerne erhalten:
@Entity
public abstract class IdentifiableNamedEntity {
@Column(unique = true, nullable=false)
private String name;
}
Gibt es eine Möglichkeit, die ich vermeiden kann, um anzugeben, nullable=false, aber immer @NotNull zu Verhalten, wie ich möchte? Gibt es eine alternative zu nullable=false, die basiert auf standard-Java-Annotationen, z.B. einige Hibernate Konfiguration?
Dies ist meine Feder-Konfiguration:
Datei ApplicationContext
<beans ...>
<context:property-placeholder location="classpath*:spring/database.properties" />
<context:component-scan base-package="com.lh.clte" />
<import resource="classpath:spring/applicationContext-persistence.xml" />
</beans>
Datei ApplicationContext-Persistenz
<beans ...>
<import resource="classpath:spring/applicationContext-jpa.xml" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${database.driverClassName}" />
<property name="url" value="${database.url}" />
<property name="username" value="${database.username}" />
<property name="password" value="${database.password}" />
<property name="initialSize" value="3" />
<property name="maxActive" value="10" />
</bean>
<tx:annotation-driven mode="proxy"
transaction-manager="transactionManager" />
<bean class="org.springframework.orm.jpa.JpaTransactionManager"
id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
id="entityManagerFactory">
<property name="persistenceUnitName" value="persistenceUnit" />
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
Datei ApplicationContext-jpa
<beans ...>
<jpa:repositories base-package="com.lh.clte.repository" />
</beans>
Da ich mich mit den repositories, ich berichten auch die übereinstimmung entity repository:
@Repository
public interface IdentifiableNamedEntityRepository extends JpaSpecificationExecutor<IdentifiableNamedEntity>, JpaRepository<IdentifiableNamedEntity, Long> {
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
@NotNull ist eine JSR 303-Bean-Validation-annotation. Es hat nichts zu tun mit Datenbank-constraints selbst. Diese Anmerkung soll für die Validierung. @Column(nullable = false) ist die Art und Weise der Deklaration einer Spalte, die nicht null ist. Diese Letzte Anmerkung ist bestimmt für die Angabe der Datenbank-schema-details
@Valid @NotNull
. Wenn@Valid
angewendet wird JPA Validierung automatisch startet, überprüfen Sie das Feld / Spalte.Können Sie auch
@NotEmpty
von Hibernate Validator.