mirror of https://github.com/apache/openjpa.git
Generate unique name for unique constraints created by @Column(unique=true)
git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@712300 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ea9378fc96
commit
e11d0f7e12
|
@ -29,6 +29,7 @@ import org.apache.commons.lang.StringUtils;
|
||||||
public class Unique
|
public class Unique
|
||||||
extends LocalConstraint {
|
extends LocalConstraint {
|
||||||
private boolean _autoNaming = false;
|
private boolean _autoNaming = false;
|
||||||
|
private static int _counter = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default constructor without a name.
|
* Default constructor without a name.
|
||||||
|
@ -111,6 +112,8 @@ public class Unique
|
||||||
Column[] columns = getColumns();
|
Column[] columns = getColumns();
|
||||||
int l = 32/Math.max(columns.length,1);
|
int l = 32/Math.max(columns.length,1);
|
||||||
StringBuffer autoName = new StringBuffer("UNQ_");
|
StringBuffer autoName = new StringBuffer("UNQ_");
|
||||||
|
if (columns.length == 0)
|
||||||
|
autoName.append(_counter++);
|
||||||
for (Column column : columns)
|
for (Column column : columns)
|
||||||
autoName.append(chop(column.getName(),l));
|
autoName.append(chop(column.getName(),l));
|
||||||
return autoName.toString();
|
return autoName.toString();
|
||||||
|
|
|
@ -63,6 +63,10 @@ public class TestUniqueConstraint extends SQLListenerTestCase {
|
||||||
"UNIQUE .*\\(GEN1, GEN2\\)");
|
"UNIQUE .*\\(GEN1, GEN2\\)");
|
||||||
assertSQLFragnments(sqls, "CREATE TABLE UNIQUE_JOINTABLE",
|
assertSQLFragnments(sqls, "CREATE TABLE UNIQUE_JOINTABLE",
|
||||||
"UNIQUE .*\\(FK_A, FK_B\\)");
|
"UNIQUE .*\\(FK_A, FK_B\\)");
|
||||||
|
assertSQLFragnments(sqls, "CREATE TABLE UNIQUE_A",
|
||||||
|
"UNIQUE .*\\(SAME\\)");
|
||||||
|
assertSQLFragnments(sqls, "CREATE TABLE UNIQUE_B",
|
||||||
|
"UNIQUE .*\\(SAME\\)");
|
||||||
}
|
}
|
||||||
|
|
||||||
void assertSQLFragnments(List<String> list, String... keys) {
|
void assertSQLFragnments(List<String> list, String... keys) {
|
||||||
|
|
|
@ -67,6 +67,8 @@ public class UniqueA {
|
||||||
@Column(nullable=false)
|
@Column(nullable=false)
|
||||||
private int a4;
|
private int a4;
|
||||||
|
|
||||||
|
@Column(name="SAME", unique=true)
|
||||||
|
private int same;
|
||||||
|
|
||||||
private int a5;
|
private int a5;
|
||||||
private int a6;
|
private int a6;
|
||||||
|
|
|
@ -35,4 +35,6 @@ public class UniqueB {
|
||||||
private int b1;
|
private int b1;
|
||||||
@Column(nullable=false)
|
@Column(nullable=false)
|
||||||
private int b2;
|
private int b2;
|
||||||
|
@Column(name="SAME", unique=true)
|
||||||
|
private int same;
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,9 @@
|
||||||
<basic name="a6">
|
<basic name="a6">
|
||||||
<column name="a6x"/>
|
<column name="a6x"/>
|
||||||
</basic>
|
</basic>
|
||||||
|
<basic name="same">
|
||||||
|
<column name="SAME" unique="true"/>
|
||||||
|
</basic>
|
||||||
<basic name="sa1">
|
<basic name="sa1">
|
||||||
<column name="sa1x" table="UNIQUE_SECONDARY_XML" />
|
<column name="sa1x" table="UNIQUE_SECONDARY_XML" />
|
||||||
</basic>
|
</basic>
|
||||||
|
@ -112,6 +114,9 @@
|
||||||
<basic name="b2">
|
<basic name="b2">
|
||||||
<column name="b2x"/>
|
<column name="b2x"/>
|
||||||
</basic>
|
</basic>
|
||||||
|
<basic name="same">
|
||||||
|
<column name="SAME" unique="true"/>
|
||||||
|
</basic>
|
||||||
</attributes>
|
</attributes>
|
||||||
</entity>
|
</entity>
|
||||||
</entity-mappings>
|
</entity-mappings>
|
||||||
|
|
Loading…
Reference in New Issue