openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Polliard <tho...@polliard.com>
Subject Re: Question about Unique Contraint
Date Wed, 20 Jan 2010 03:41:34 GMT
I found the solution.

To unique constraint a column I needed to use the @Column annotation's attributes:

@Entity
public class Account {
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Integer accountId = null;
	@Basic @Column(unique=true,nullable=false)
	private String accountName = null;
	@Basic
	private Date creationDate = null;
	@ManyToMany(cascade=CascadeType.ALL)
	private List<Host> hostList = new ArrayList<Host>();


Thanks for the Help Ravi!

Thomas


On Jan 19, 2010, at 10:13 PM, Thomas Polliard wrote:

> @Entity
> @Table(name="ACCOUNT",uniqueConstraints=@Unique(columnNames="ACCOUNTNAME"))
> public class Account {
> 	@Id
> 	@GeneratedValue(strategy=GenerationType.AUTO)
> 	private Integer accountId = null;
> 	@Basic
> 	private String accountName = null;
> 	@Basic
> 	private Date creationDate = null;
> 	@ManyToMany(cascade=CascadeType.ALL)
> 	private List<Host> hostList = new ArrayList<Host>();
> 
> ....
> 
> 
> Results in 
> compile:
>    [javac] Compiling 4 source files to /Users/polliard/Workspace/Example JPA/build
>    [javac] /Users/polliard/Workspace/Example JPA/src/com/trukoda/examples/jpa/Account.java:19:
incompatible types
>    [javac] found   : org.apache.openjpa.persistence.jdbc.Unique
>    [javac] required: javax.persistence.UniqueConstraint
>    [javac] @Table(name="ACCOUNT",uniqueConstraints=@Unique(columnNames="ACCOUNTNAME"))
>    [javac]                                          ^
>    [javac] Note: /Users/polliard/Workspace/Example JPA/src/com/trukoda/examples/jpa/MainQuery.java
uses unchecked or unsafe operations.
>    [javac] Note: Recompile with -Xlint:unchecked for details.
>    [javac] 1 error
> 
> 
> So if that example does exist it must not compile correctly.
> 
> Thanks for taking a look though.
> 
> Thomas
> On Jan 19, 2010, at 10:01 PM, Ravi Palacherla wrote:
> 
>> Hi,
>> 
>> http://java.sun.com/javaee/5/docs/api/index.html?javax/persistence/Table.html
>> 
>> As per the above link the one mentioned in openJPA document is  supposed to work.
>> (http://openjpa.apache.org/builds/1.0.2/apache-openjpa-1.0.2/docs/manual/ref_guide_mapping_jpa.html#ref_guide_mapping_jpa_unique)
>> 
>> I also saw the following in openJPA example:
>> 
>> @Entity
>> @Table(name="ART", uniqueConstraints=@Unique(columnNames="TITLE"))
>> public class Article {
>>   ...
>> }
>> 
>> http://openjpa.apache.org/builds/latest/docs/manual/manual.html#jpa_overview_mapping_identityex
>> 
>> Please try if the above works.
>> 
>> Regards,
>> Ravi.
>> 
>> -----Original Message-----
>> From: Thomas Polliard [mailto:thomas@polliard.com] 
>> Sent: Tuesday, January 19, 2010 7:50 PM
>> To: users@openjpa.apache.org
>> Subject: Question about Unique Contraint
>> 
>> public class Account {
>> 	@Id
>> 	@GeneratedValue(strategy=GenerationType.AUTO)
>> 	private Integer Id = null;
>> 	@Unique
>> 	private String accountName = null;
>> 	@Basic
>> 	private Date creationDate = null;
>> 	@ManyToMany(cascade=CascadeType.ALL)
>> 	private List<Host> hostList = new ArrayList<Host>();
>> 
>> However, in the database it actually doesn't restrict the accountName but rather
forces a new ID to be generated with the same accountName. What page can I find out about
creating a Unique constraint that mimics this in pseudo database ddl
>> 
>> create table Account (
>> 	Id		int4		PRIMARY KEY,
>> 	accountname	varchar(255)	NOT NULL UNIQUE,
>> 	.....
>> 
>> 
>> Thanks for the assistance.
>> 
>> Thomas
>> 
>> 
>> PS:
>> 
>> http://openjpa.apache.org/builds/1.0.2/apache-openjpa-1.0.2/docs/manual/ref_guide_mapping_jpa.html#ref_guide_mapping_jpa_unique
>> 
>> Doesn't appear to be the proper Annotation.
>> 
> 


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message