Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add columns length support #44

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions sample/src/main/java/com/example/entity/ABTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ public class ABTest implements Serializable, ExpirationPredicate {

@Id
@Nonnull
@Column(name = "\"identifier\"", nullable = false)
@Column(name = "\"identifier\"", nullable = false, length = 50)
private String identifier;
@Nonnull
@Column(name = "\"expiration_timestamp\"", nullable = false)
private Integer expirationTimestamp;
@Experimental(comment = "The expected data format is JSON")
@Nullable
@Column(name = "\"config\"", nullable = true)
@Column(name = "\"config\"", nullable = true, length = 2147483647)
private String config;
}
2 changes: 1 addition & 1 deletion sample/src/main/java/com/example/entity/Blog.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class Blog implements Serializable {
@Column(name = "\"id\"", nullable = false)
private int id;
@Nullable
@Column(name = "\"name\"", nullable = true)
@Column(name = "\"name\"", nullable = true, length = 30)
private String name;
@Column(name = "\"active\"", nullable = true)
private boolean active;
Expand Down
2 changes: 1 addition & 1 deletion sample/src/main/java/com/example/entity/BlogArticle.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class BlogArticle implements Serializable {
@Column(name = "\"blog_id\"", nullable = true)
private Integer blogId;
@Nullable
@Column(name = "\"name\"", nullable = true)
@Column(name = "\"name\"", nullable = true, length = 30)
private String name;
@Deprecated
@Nullable
Expand Down
5 changes: 4 additions & 1 deletion sample/src/main/java/com/example/entity/Tag.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,11 @@ public class Tag implements Serializable {
@Column(name = "\"id\"", nullable = false)
private int id;
@Nullable
@Column(name = "\"tag\"", nullable = true)
@Column(name = "\"tag\"", nullable = true, length = 100)
private String tag;
@Nullable
@Column(name = "\"average\"", nullable = true, precision = 9, scale = 2)
private java.math.BigDecimal average;
@Nonnull
@Column(name = "\"created_at\"", nullable = false)
private Timestamp createdAt;
Expand Down
4 changes: 2 additions & 2 deletions sample/src/main/java/com/example/entity/jpa1/ABTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ public class ABTest implements Serializable, ExpirationPredicate {

@Id
@Nonnull
@Column(name = "`identifier`", nullable = false)
@Column(name = "`identifier`", nullable = false, length = 50)
private String identifier;
@Nonnull
@Column(name = "`expiration_timestamp`", nullable = false)
private Integer expirationTimestamp;
@Experimental(comment = "The expected data format is JSON")
@Nullable
@Column(name = "`config`", nullable = true)
@Column(name = "`config`", nullable = true, length = 2147483647)
private String config;
}
2 changes: 1 addition & 1 deletion sample/src/main/java/com/example/entity/jpa1/Blog.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class Blog implements Serializable {
@Column(name = "`id`", nullable = false)
private int id;
@Nullable
@Column(name = "`name`", nullable = true)
@Column(name = "`name`", nullable = true, length = 30)
private String name;
@Column(name = "`active`", nullable = true)
private boolean active;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class BlogArticle implements Serializable {
@Column(name = "`blog_id`", nullable = true)
private Integer blogId;
@Nullable
@Column(name = "`name`", nullable = true)
@Column(name = "`name`", nullable = true, length = 30)
private String name;
@Deprecated
@Nullable
Expand Down
5 changes: 4 additions & 1 deletion sample/src/main/java/com/example/entity/jpa1/Tag.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,11 @@ public class Tag implements Serializable {
@Column(name = "`id`", nullable = false)
private int id;
@Nullable
@Column(name = "`tag`", nullable = true)
@Column(name = "`tag`", nullable = true, length = 100)
private String tag;
@Nullable
@Column(name = "`average`", nullable = true, precision = 9, scale = 2)
private java.math.BigDecimal average;
@Nonnull
@Column(name = "`created_at`", nullable = false)
private Timestamp createdAt;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;
import java.math.BigDecimal;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
Expand Down Expand Up @@ -133,6 +134,15 @@ public static void generateAll(CodeGeneratorConfig originalConfig, boolean isJpa
f.setPrimitive(isPrimitive(f.getType()));
}

if ("String".equals(f.getType())) {
f.setLength(c.getColumnSize());
}

if ("java.math.BigDecimal".equals(f.getType())) {
f.setPrecision(c.getColumnSize());
f.setScale(c.getDecimalDigits());
}

Optional<FieldDefaultValueRule> fieldDefaultValueRule =
orEmptyListIfNull(config.getFieldDefaultValueRules()).stream()
.filter(r -> r.matches(className, fieldName)).findFirst();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ public static class Field {
private String columnName;
private boolean nullable;
private String type;
private Integer length;
private Integer precision;
private Integer scale;
private String comment;
private String defaultValue;
private boolean primaryKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,7 @@ public class Column {
private boolean nullable;
private boolean primaryKey;
private boolean autoIncrement;
private int columnSize;
private int decimalDigits;
private Optional<String> description = Optional.empty();
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ public Table getTable(JDBCSettings jdbcSettings, String schemaAndTable) throws S
column.setName(rs.getString("COLUMN_NAME"));
column.setTypeCode(rs.getInt("DATA_TYPE"));
column.setTypeName(rs.getString("TYPE_NAME"));
column.setColumnSize(rs.getInt("COLUMN_SIZE"));
column.setDecimalDigits(rs.getInt("DECIMAL_DIGITS"));

// Oracle throws java.sql.SQLException: Invalid column name
boolean autoIncrement = false;
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/entityGen/entity.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ ${field.comment}
<#if requireJSR305 && !field.primitive>
<#if field.nullable>@Nullable<#else>@Nonnull</#if>
</#if>
@Column(name = "<#if jpa1Compatible>`<#else>\"</#if>${field.columnName}<#if jpa1Compatible>`<#else>\"</#if>", nullable = ${field.nullable?c})
@Column(name = "<#if jpa1Compatible>`<#else>\"</#if>${field.columnName}<#if jpa1Compatible>`<#else>\"</#if>", nullable = ${field.nullable?c}<#if field.length??>, length = ${field.length?c}</#if><#if field.precision??>, precision = ${field.precision?c}</#if><#if field.scale??>, scale = ${field.scale?c}</#if>)
private ${field.type} ${field.name}<#if field.defaultValue??> = ${field.defaultValue}</#if>;
</#list>
<#list bottomAdditionalCodeList as code>
Expand Down
4 changes: 2 additions & 2 deletions src/test/java/com/example/entity/ABTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@
public class ABTest implements Serializable, ExpirationPredicate {

@Id
@Column(name = "\"identifier\"", nullable = false)
@Column(name = "\"identifier\"", nullable = false, length = 50)
private String identifier;
@Column(name = "\"expiration_timestamp\"", nullable = false)
private Integer expirationTimestamp;
@Experimental(comment = "The expected data format is JSON")
@Column(name = "\"config\"", nullable = true)
@Column(name = "\"config\"", nullable = true, length = 2147483647)
private String config;
}
2 changes: 1 addition & 1 deletion src/test/java/com/example/entity/Blog.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class Blog implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "\"id\"", nullable = false)
private Integer id;
@Column(name = "\"name\"", nullable = true)
@Column(name = "\"name\"", nullable = true, length = 30)
private String name;
@Column(name = "\"active\"", nullable = true)
private boolean active;
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/com/example/entity/BlogArticle.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class BlogArticle implements Serializable {
*/
@Column(name = "\"blog_id\"", nullable = true)
private Integer blogId;
@Column(name = "\"name\"", nullable = true)
@Column(name = "\"name\"", nullable = true, length = 30)
private String name;
@Deprecated
@Column(name = "\"tags\"", nullable = true)
Expand Down
4 changes: 3 additions & 1 deletion src/test/java/com/example/entity/Tag.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ public class Tag implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "\"id\"", nullable = false)
private Integer id;
@Column(name = "\"tag\"", nullable = true)
@Column(name = "\"tag\"", nullable = true, length = 100)
private String tag;
@Column(name = "\"average\"", nullable = true, precision = 9, scale = 2)
private java.math.BigDecimal average;
@Column(name = "\"created_at\"", nullable = false)
private Timestamp createdAt;
}
4 changes: 2 additions & 2 deletions src/test/java/com/example/entity/jpa1/ABTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@
public class ABTest implements Serializable, ExpirationPredicate {

@Id
@Column(name = "`identifier`", nullable = false)
@Column(name = "`identifier`", nullable = false, length = 50)
private String identifier;
@Column(name = "`expiration_timestamp`", nullable = false)
private Integer expirationTimestamp;
@Experimental(comment = "The expected data format is JSON")
@Column(name = "`config`", nullable = true)
@Column(name = "`config`", nullable = true, length = 2147483647)
private String config;
}
2 changes: 1 addition & 1 deletion src/test/java/com/example/entity/jpa1/Blog.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class Blog implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "`id`", nullable = false)
private Integer id;
@Column(name = "`name`", nullable = true)
@Column(name = "`name`", nullable = true, length = 30)
private String name;
@Column(name = "`active`", nullable = true)
private boolean active;
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/com/example/entity/jpa1/BlogArticle.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class BlogArticle implements Serializable {
*/
@Column(name = "`blog_id`", nullable = true)
private Integer blogId;
@Column(name = "`name`", nullable = true)
@Column(name = "`name`", nullable = true, length = 30)
private String name;
@Deprecated
@Column(name = "`tags`", nullable = true)
Expand Down
4 changes: 3 additions & 1 deletion src/test/java/com/example/entity/jpa1/Tag.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ public class Tag implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "`id`", nullable = false)
private Integer id;
@Column(name = "`tag`", nullable = true)
@Column(name = "`tag`", nullable = true, length = 100)
private String tag;
@Column(name = "`average`", nullable = true, precision = 9, scale = 2)
private java.math.BigDecimal average;
@Column(name = "`created_at`", nullable = false)
private Timestamp createdAt;
}
2 changes: 1 addition & 1 deletion src/test/java/com/example/entity2/BlogArticle.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class BlogArticle implements Serializable {
@Column(name = "\"blog_id\"", nullable = true)
private Integer blogId;
@Nullable
@Column(name = "\"name\"", nullable = true)
@Column(name = "\"name\"", nullable = true, length = 30)
private String name;
@Deprecated
@Nullable
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/com/example/entity2/jpa1/BlogArticle.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class BlogArticle implements Serializable {
@Column(name = "`blog_id`", nullable = true)
private Integer blogId;
@Nullable
@Column(name = "`name`", nullable = true)
@Column(name = "`name`", nullable = true, length = 30)
private String name;
@Deprecated
@Nullable
Expand Down
4 changes: 2 additions & 2 deletions src/test/java/com/example/entity3/ABTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@
public class ABTest implements Serializable, ExpirationPredicate {

@Id
@Column(name = "\"identifier\"", nullable = false)
@Column(name = "\"identifier\"", nullable = false, length = 50)
private String identifier;
@Column(name = "\"expiration_timestamp\"", nullable = false)
private Integer expirationTimestamp;
@Experimental(comment = "The expected data format is JSON")
@Column(name = "\"config\"", nullable = true)
@Column(name = "\"config\"", nullable = true, length = 2147483647)
private String config;
}
2 changes: 1 addition & 1 deletion src/test/java/com/example/entity3/Blog.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class Blog implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "\"id\"", nullable = false)
private Integer id;
@Column(name = "\"name\"", nullable = true)
@Column(name = "\"name\"", nullable = true, length = 30)
private String name;
@Column(name = "\"active\"", nullable = true)
private boolean active;
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/com/example/entity3/BlogArticle.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class BlogArticle implements Serializable {
*/
@Column(name = "\"blog_id\"", nullable = true)
private Integer blogId;
@Column(name = "\"name\"", nullable = true)
@Column(name = "\"name\"", nullable = true, length = 30)
private String name;
@Deprecated
@Column(name = "\"tags\"", nullable = true)
Expand Down
4 changes: 3 additions & 1 deletion src/test/java/com/example/entity3/Tag.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ public class Tag implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "\"id\"", nullable = false)
private Integer id;
@Column(name = "\"tag\"", nullable = true)
@Column(name = "\"tag\"", nullable = true, length = 100)
private String tag;
@Column(name = "\"average\"", nullable = true, precision = 9, scale = 2)
private java.math.BigDecimal average;
@Column(name = "\"created_at\"", nullable = false)
private Timestamp createdAt;
}
4 changes: 2 additions & 2 deletions src/test/java/com/example/entity3/jpa1/ABTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@
public class ABTest implements Serializable, ExpirationPredicate {

@Id
@Column(name = "`identifier`", nullable = false)
@Column(name = "`identifier`", nullable = false, length = 50)
private String identifier;
@Column(name = "`expiration_timestamp`", nullable = false)
private Integer expirationTimestamp;
@Experimental(comment = "The expected data format is JSON")
@Column(name = "`config`", nullable = true)
@Column(name = "`config`", nullable = true, length = 2147483647)
private String config;
}
2 changes: 1 addition & 1 deletion src/test/java/com/example/entity3/jpa1/Blog.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class Blog implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "`id`", nullable = false)
private Integer id;
@Column(name = "`name`", nullable = true)
@Column(name = "`name`", nullable = true, length = 30)
private String name;
@Column(name = "`active`", nullable = true)
private boolean active;
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/com/example/entity3/jpa1/BlogArticle.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class BlogArticle implements Serializable {
*/
@Column(name = "`blog_id`", nullable = true)
private Integer blogId;
@Column(name = "`name`", nullable = true)
@Column(name = "`name`", nullable = true, length = 30)
private String name;
@Deprecated
@Column(name = "`tags`", nullable = true)
Expand Down
4 changes: 3 additions & 1 deletion src/test/java/com/example/entity3/jpa1/Tag.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ public class Tag implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "`id`", nullable = false)
private Integer id;
@Column(name = "`tag`", nullable = true)
@Column(name = "`tag`", nullable = true, length = 100)
private String tag;
@Column(name = "`average`", nullable = true, precision = 9, scale = 2)
private java.math.BigDecimal average;
@Column(name = "`created_at`", nullable = false)
private Timestamp createdAt;
}
2 changes: 1 addition & 1 deletion src/test/java/com/example/entity4/BlogArticle.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class BlogArticle implements Serializable {
@Column(name = "\"blog_id\"", nullable = true)
private Integer blogId;
@Nullable
@Column(name = "\"name\"", nullable = true)
@Column(name = "\"name\"", nullable = true, length = 30)
private String name;
@Deprecated
@Nullable
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/com/example/entity4/jpa1/BlogArticle.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class BlogArticle implements Serializable {
@Column(name = "`blog_id`", nullable = true)
private Integer blogId;
@Nullable
@Column(name = "`name`", nullable = true)
@Column(name = "`name`", nullable = true, length = 30)
private String name;
@Deprecated
@Nullable
Expand Down
1 change: 1 addition & 0 deletions src/test/java/com/example/unit/DatabaseUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public static void init() throws SQLException, ClassNotFoundException {
conn.prepareStatement("create table tag (" +
"id integer primary key auto_increment not null, " +
"tag varchar(100), " +
"average numeric(9,2), " +
"created_at timestamp not null" +
")").execute();
conn.prepareStatement("create table article_tag (" +
Expand Down