Thank you Matthew,

I know how to set default value as you can see in my example
cName.setDefault("O,K");
but it is not escape : "na-me" VARCHAR(255) DEFAULT O,K NOT NULL,
Should be : "na-me" VARCHAR(255) DEFAULT "O,K" NOT NULL,
isn't it ?

Regards

On 13 June 2018 at 19:39, Matthew Broadhead <
matthew.broadh...@nbmlaw.co.uk.invalid> wrote:

> have you tried setDefaultString?
> also this might be the source code here https://apache.googlesource.co
> m/openjpa/+/295576ffb0080106de70cc4caf23ab38d59cf56a/
> openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Column.java
>
>
> On 13/06/18 12:51, Yves PIEL wrote:
>
>> Hello Matthew,
>>
>> Thanks for your answer.
>>
>> My use case is really to generate SQL queries programmatically, as my
>> example shows, not from java entities.
>>
>> Regards,
>> Yves
>>
>> On 13 June 2018 at 12:18, Matthew Broadhead <
>> matthew.broadh...@nbmlaw.co.uk>
>> wrote:
>>
>> 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
>>>>
>>>>
>>>>
>

Reply via email to