Skip to content

Commit

Permalink
jakartaee/persistence#417 - Add left(), right(), and replace() functi…
Browse files Browse the repository at this point in the history
…ons to JPQL/criteria

jakartaee/persistence#356 - Add extract() to CriteriaBuilder

Signed-off-by: Tomáš Kraus <tomas.kraus@oracle.com>
  • Loading branch information
Tomas-Kraus authored and lukasj committed Oct 17, 2023
1 parent c899623 commit eada175
Show file tree
Hide file tree
Showing 7 changed files with 966 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,41 @@ protected static FieldDefinition createDateColumn(
*/
protected static FieldDefinition createDateColumn(
final String name) {
return createDateColumn(name, 23, true);
return createDateColumn(name, 3, true);
}

/**
* Helper method to create {@link FieldDefinition} instance
* for {@link java.time.LocalTime} column with given name and size and without
* any additional constraints.
* @param name Column name.
* @param size Column date size.
* @param allowNull Allow {@code null} values for column.
* @return Initialized {@link FieldDefinition} instance.
*/
protected static FieldDefinition createTimeColumn(
final String name, final int size, final boolean allowNull) {
final FieldDefinition field = new FieldDefinition();
field.setName(name);
field.setTypeName("TIME");
field.setSize(size);
field.setShouldAllowNull(allowNull);
field.setIsPrimaryKey(false);
field.setUnique(false);
field.setIsIdentity(false);
return field;
}

/**
* Helper method to create {@link FieldDefinition} instance
* for {@link java.time.LocalTime} column with given name size of {@code 23},
* with {@code null} value allowed and without any additional constraints.
* @param name Column name.
* @return Initialized {@link FieldDefinition} instance.
*/
protected static FieldDefinition createTimeColumn(
final String name) {
return createDateColumn(name, 3, true);
}

protected void adjustForeignKeyFieldTypes(DatabaseSession session) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public Persistence32TableCreator() {
addTableDefinition(buildTypeTable());
addTableDefinition(buildPokemonTable());
addTableDefinition(buildPokemonTypeTable());
addTableDefinition(buildSyntaxEntityTable());
}

public static TableDefinition buildTypeTable() {
Expand All @@ -48,4 +49,16 @@ public static TableDefinition buildPokemonTypeTable() {
return table;
}

public static TableDefinition buildSyntaxEntityTable() {
TableDefinition table = new TableDefinition();
table.setName("PERSISTENCE32_SYNTAX_ENTITY");
table.addField(createNumericPk("ID"));
table.addField(createStringColumn("STR_VAL_1", 128, true));
table.addField(createStringColumn("STR_VAL_2", 128, true));
table.addField(createNumericColumn("INT_VAL", 15, true));
table.addField(createTimeColumn("TIME_VAL", 3, true));
table.addField(createDateColumn("DATE_VAL", 3, true));
return table;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
package org.eclipse.persistence.testing.models.jpa.persistence32;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Collection;

import jakarta.persistence.CollectionTable;
import jakarta.persistence.Column;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.Table;

// JPQL query and Criteria query tests
@Entity
@Table(name="PERSISTENCE32_SYNTAX_ENTITY")
public class SyntaxEntity {

@Id
private long id;

@Column(name = "STR_VAL_1")
private String strVal1;
@Column(name = "STR_VAL_2")
private String strVal2;

@Column(name = "INT_VAL")
private Integer intVal;

@Column(name = "TIME_VAL")
private LocalTime timeVal;

@Column(name = "DATE_VAL")
private LocalDate dateVal;

@ElementCollection
@CollectionTable(name = "PERSISTENCE32_SE_COLTABLE", joinColumns = @JoinColumn(name = "ent_id"))
private Collection<String> colVal;

public SyntaxEntity() {
}

public SyntaxEntity(Long id) {
this.id = id;
}

public SyntaxEntity(Long id,
String strVal1,
String strVal2,
Integer intVal,
LocalTime timeVal,
LocalDate dateVal,
Collection<String> colVal) {
this.id = id;
this.strVal1 = strVal1;
this.strVal2 = strVal2;
this.intVal = intVal;
this.timeVal = timeVal;
this.dateVal = dateVal;
this.colVal = colVal;
}

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public String getStrVal1() {
return strVal1;
}

public void setStrVal1(String strVal1) {
this.strVal1 = strVal1;
}

public String getStrVal2() {
return strVal2;
}

public void setStrVal2(String strVal2) {
this.strVal2 = strVal2;
}

public Integer getIntVal() {
return intVal;
}

public void setIntVal(Integer intVal) {
this.intVal = intVal;
}

public LocalTime getTimeVal() {
return timeVal;
}

public void setTimeVal(LocalTime timeVal) {
this.timeVal = timeVal;
}

public LocalDate getDateVal() {
return dateVal;
}

public void setDateVal(LocalDate dateVal) {
this.dateVal = dateVal;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>org.eclipse.persistence.testing.models.jpa.persistence32.Pokemon</class>
<class>org.eclipse.persistence.testing.models.jpa.persistence32.Type</class>
<class>org.eclipse.persistence.testing.models.jpa.persistence32.SyntaxEntity</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="jakarta.persistence.schema-generation.scripts.action" value="none"/>
Expand Down

0 comments on commit eada175

Please sign in to comment.