diff --git a/pom.xml b/pom.xml index 6351d116b..ea16b2258 100644 --- a/pom.xml +++ b/pom.xml @@ -37,7 +37,7 @@ io.ebean ebean-annotation - 2.2 + 2.3 diff --git a/src/main/java/io/ebean/annotation/Transactional.java b/src/main/java/io/ebean/annotation/Transactional.java deleted file mode 100644 index 02a807321..000000000 --- a/src/main/java/io/ebean/annotation/Transactional.java +++ /dev/null @@ -1,138 +0,0 @@ -package io.ebean.annotation; - -import io.ebean.TxIsolation; -import io.ebean.TxType; -import io.ebean.PersistBatch; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Specify transaction scoping for a method. - *

- * This is only supported if "Enhancement" is used via javaagent, ANT - * task or IDE enhancement plugin etc. - *

- *

- * Note: Currently there are 3 known annotations that perform this role. - *

- * Spring created their one because the EJB annotation does not support features - * such as isolation level and specifying rollbackOn, noRollbackOn exceptions. - * This one exists for Ebean because I agree that the standard one is - * insufficient and don't want to include a dependency on Spring. - *

- *

- * The default behaviour of EJB (and hence Spring) is to NOT ROLLBACK on checked - * exceptions. I find this very counter-intuitive. Ebean will provide a property - * to set the default behaviour to rollback on any exception and optionally - * change the setting to be consistent with EJB/Spring if people wish to do so. - *

- *

- *

{@code
- *
- *  // a normal class
- *  public class MySimpleUserService {
- *
- *    // this method is transactional automatically handling
- *    // transaction begin, commit and rollback etc
- *    @Transactional
- *    public void runInTrans() throws IOException {
- *
- *      // tasks performed within the transaction
- *      ...
- *      // find some objects
- *      Customer cust = ebeanServer.find(Customer.class, 42);
- *
- *      Order order = ...;
- *      ...
- *      // save some objects
- *      ebeanServer.save(customer);
- *      ebeanServer.save(order);
- *    }
- *
- * }
- */ -@Target({ElementType.METHOD, ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -public @interface Transactional { - - /** - * The type of transaction scoping. Defaults to REQUIRED. - */ - TxType type() default TxType.REQUIRED; - - /** - * Persist batch mode for the transaction. - */ - PersistBatch batch() default PersistBatch.INHERIT; - - /** - * Persist batch mode for the request if not set on the transaction. - *

- * If batch is set to NONE then batchOnCascade can be set to INSERT or ALL - * and then each save(), delete(), insert(), update() request that cascades - * to child beans can use JDBC batch. - *

- */ - PersistBatch batchOnCascade() default PersistBatch.INHERIT; - - /** - * The batch size to use when using JDBC batch mode. - *

- * If unset this defaults to the value set in ServerConfig. - *

- */ - int batchSize() default 0; - - /** - * Set to false when we want to skip getting generatedKeys. - *

- * This is typically used in the case of large batch inserts where we get a - * performance benefit from not calling getGeneratedKeys (as we are going to - * insert a lot of rows and have no need for the Id values after the insert). - *

- */ - boolean getGeneratedKeys() default true; - - /** - * The transaction isolation level this transaction should have. - *

- * This will only be used if this scope creates the transaction. If the - * transaction has already started then this will currently be ignored (you - * could argue that it should throw an exception). - *

- */ - TxIsolation isolation() default TxIsolation.DEFAULT; - - /** - * Set this to true if the transaction should be only contain queries. - */ - boolean readOnly() default false; - - /** - * The name of the server that you want the transaction to be created from. - *

- * If left blank the 'default' server is used. - *

- */ - String serverName() default ""; - - // int timeout() default 0; - - /** - * The Throwable's that will explicitly cause a rollback to occur. - */ - Class[] rollbackFor() default {}; - - /** - * The Throwable's that will explicitly NOT cause a rollback to occur. - */ - Class[] noRollbackFor() default {}; - -} diff --git a/src/main/java/io/ebean/annotation/package-info.java b/src/main/java/io/ebean/annotation/package-info.java deleted file mode 100644 index 9dcb5b414..000000000 --- a/src/main/java/io/ebean/annotation/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Transactional annotations. - */ -package io.ebean.annotation; diff --git a/src/main/java/io/ebeaninternal/server/deploy/parse/AnnotationFields.java b/src/main/java/io/ebeaninternal/server/deploy/parse/AnnotationFields.java index 19dd45426..51bcedd38 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/parse/AnnotationFields.java +++ b/src/main/java/io/ebeaninternal/server/deploy/parse/AnnotationFields.java @@ -91,7 +91,6 @@ public class AnnotationFields extends AnnotationParser { boolean javaxValidationAnnotations, boolean jacksonAnnotationsPresent, boolean eagerFetchLobs) { super(info, javaxValidationAnnotations); - this.jacksonAnnotationsPresent = jacksonAnnotationsPresent; this.generatedPropFactory = generatedPropFactory; @@ -317,6 +316,10 @@ public class AnnotationFields extends AnnotationParser { prop.setExcludedFromHistory(); } + io.ebean.annotation.NotNull nonNull = get(prop, io.ebean.annotation.NotNull.class); + if (nonNull != null) { + prop.setNullable(false); + } if (validationAnnotations) { NotNull notNull = get(prop, NotNull.class); if (notNull != null && isEbeanValidationGroups(notNull.groups())) {