openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matthew Broadhead <matthew.broadh...@nbmlaw.co.uk.INVALID>
Subject Re: Escape default value on CREATE TABLE
Date Thu, 14 Jun 2018 08:34:04 GMT
did you try cName.setDefaultString("O,K");
?

On 14/06/18 09:29, Yves PIEL wrote:
> 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.broadhead@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.broadhead@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
>>>>>
>>>>>
>>>>>


Mime
View raw message