| /* |
| * Copyright (c) 2010-2013, 2015 Eike Stepper (Berlin, Germany) and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Martin Taal - initial API and implementation |
| */ |
| package org.eclipse.emf.cdo.tests.hibernate; |
| |
| import org.eclipse.emf.cdo.eresource.CDOResource; |
| import org.eclipse.emf.cdo.session.CDOSession; |
| import org.eclipse.emf.cdo.tests.AbstractCDOTest; |
| import org.eclipse.emf.cdo.tests.model1.Category; |
| import org.eclipse.emf.cdo.tests.model1.legacy.Model1Package; |
| import org.eclipse.emf.cdo.transaction.CDOTransaction; |
| |
| import org.eclipse.emf.ecore.EAnnotation; |
| import org.eclipse.emf.ecore.EcoreFactory; |
| |
| /** |
| * Allow application to set generated id. |
| * <p> |
| * See bug 301104 |
| * |
| * @author Martin Taal |
| */ |
| public class HibernateBugzilla_301104_Test extends AbstractCDOTest |
| { |
| public void testSetId() throws Exception |
| { |
| final String uuid = "MyUUID"; |
| |
| // add the id and generated value annotations |
| final EAnnotation eAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); |
| eAnnotation.setSource("teneo.jpa"); |
| eAnnotation.getDetails().put("value", "@Id @GeneratedValue(generator=\"system-uuid\")"); |
| Model1Package.eINSTANCE.getCategory_Name().getEAnnotations().add(eAnnotation); |
| |
| Category category1; |
| { |
| final CDOSession session = openSession(); |
| final CDOTransaction transaction = session.openTransaction(); |
| |
| final CDOResource resource = transaction.createResource(getResourcePath("/test1")); |
| category1 = getModel1Factory().createCategory(); |
| category1.setName(uuid); |
| resource.getContents().add(category1); |
| |
| transaction.commit(); |
| } |
| { |
| final CDOSession session = openSession(); |
| final CDOTransaction transaction = session.openTransaction(); |
| final CDOResource resource = transaction.getResource(getResourcePath("/test1")); |
| final Category category2 = (Category)resource.getContents().get(0); |
| assertNotSame(category1, category2); |
| assertEquals(uuid, category2.getName()); |
| transaction.commit(); |
| } |
| } |
| } |