All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.samples.java.ex.JPAI_Sample Maven / Gradle / Ivy

package ex;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.springframework.transaction.annotation.Transactional;

public class JPAI_Sample {

	EntityManager em;

	@Transactional
	private void writeData() {
	}

	@Transactional
	public void writeGoodData() {
	}

	private void badWrite() {
		writeGoodData();
	}

	public void ignoreMergeResult(MyEntity e, SubEntity s) {

		em.merge(e);
		em.merge(s);

		List ss = new ArrayList();
		ss.add(s);
		e.setSubEntities(ss);

		em.flush();
	}

	@Transactional
	public void noRollbacks(MyEntity e) throws IOException {

	}

	@Transactional(rollbackFor = { SQLException.class,
			CloneNotSupportedException.class }, noRollbackFor = IOException.class)
	public void noDeclaredRollbackExceptions() {
	}

	@Transactional(rollbackFor = SQLException.class, noRollbackFor = IOException.class)
	public void fpDefinedRollBack(MyEntity e) throws SQLException, FileNotFoundException {
	}

	@Transactional(readOnly = true)
	public void fpReadOnlyExceptions(MyEntity e) throws IOException {
	}

	@Transactional
	public void customEx(MyEntity e) throws FP441Exception {
		// FP441Exception is a runtime exception
	}

	@Entity
	@Table(name = "MY_ENTITY")
	public static class MyEntity {

		private Integer id;
		private List subEntities;

		@Id
		@SequenceGenerator(name = "MY_ENTITY_SEQ", sequenceName = "MY_ENTITY_SEQ", allocationSize = 100)
		@GeneratedValue(generator = "MY_ENTITY_SEQ")
		@Column(name = "ID", nullable = false, unique = true)
		public Integer getId() {
			return id;
		}

		public void setId(Integer id) {
			this.id = id;
		}

		@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "myEntity", targetEntity = MyEntity.class)
		public List getSubEntities() {
			return subEntities;
		}

		public void setSubEntities(List subEntities) {
			this.subEntities = subEntities;
		}

		@Override
		public int hashCode() {
			return id.hashCode();
		}

		@Override
		public boolean equals(Object o) {
			if (!(o instanceof MyEntity)) {
				return false;
			}

			MyEntity that = (MyEntity) o;
			if (id == null) {
				return that.id == null;
			}

			return id.equals(that.id);
		}
	}

	@Entity
	@Table(name = "SUB_ENTITY")
	public static class SubEntity {

		public Integer subId;
		public MyEntity myEntity;

		@Id
		@SequenceGenerator(name = "SUB_ENTITY_SEQ", sequenceName = "SUB_ENTITY_SEQ", allocationSize = 100)
		@GeneratedValue(generator = "SUB_ENTITY_SEQ")
		@Column(name = "SUB_ID", nullable = false, unique = true)
		public Integer getSubId() {
			return subId;
		}

		public void setSubId(Integer subId) {
			this.subId = subId;
		}

		@JoinColumn(name = "ID", referencedColumnName = "ID", nullable = false)
		@ManyToOne(fetch = FetchType.EAGER, targetEntity = MyEntity.class)
		public MyEntity getMyEntity() {
			return myEntity;
		}

		public void setMyEntity(MyEntity myEntity) {
			this.myEntity = myEntity;
		}
	}

	public class FP441Exception extends RuntimeException {

	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy