i don't know your use case but i generate the tables automatically from
the java entities by setting the SynchroniseMappings property in
persistence.xml, e.g.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="myDb">
<jta-data-source>myDb</jta-data-source>
<class>com.example.entities.jpa.Entity1</class>
<class>com.example.entities.jpa.Entity2</class>
<properties>
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(ForeignKeys=true)" />
</properties>
</persistence-unit>
</persistence>
an example entity might be:
package com.example.entities.jpa;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Version;
@Entity
public class Entity1 implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Long id;
@Version
private Long version;
@Column(length = 255)
private String name;
...getters setters
}
and you could just set the default when you initialise the Entity? like
Entity1 entity1 = new Entity1();
entity1.setName("O,K");
On 12/06/18 15:21, Yves PIEL wrote:
Hi,
I try to use JPA to generate CREATE TABLE statements.All works fine but
default values of VARCHAR.
For example, I add a VARCHAR column with default value with :
DBIdentifier name = DBIdentifier.newColumn("na-me");
Column cName = table.addColumn(name);
cName.setType(Types.VARCHAR);
cName.setNotNull(true);
cName.setSize(255);
cName.setDefault("O,K");
And the generated code is:
DB => CREATE TABLE "My-schema".MaTable (id1 INTEGER NOT NULL, id2
VARCHAR(500) NOT NULL, "na-me" VARCHAR(255) DEFAULT O,K NOT NULL, âge
TINYINT DEFAULT 20, salary DECIMAL, CONSTRAINT idkeys PRIMARY KEY (id1,
id2))
'O,K' will corrupt my SQL query. How can I force the escape of default
values ?
Regards,
Yves