Так что я только начинаю с Hibernate. Мне дали этот проект, к которому я должен добавить некоторые функции, но сначала я должен понять существующую кодовую базу. Я не могу понять, как Критерии работают с отношениями (OneToMany, ManyToOne и т. Д. c) и работают ли они вложенно.
ApplicationInfo. java
@Entity
@Table(name = "APPLICATION")
public class ApplicationInfo implements DomainObject, Serializable
{
@Column(name = "OID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
private long myId;
@Embedded
private ApplicationId myApplicationId;
@JoinColumn(name = "ALL_PERMISSION_ID")
@OneToOne(cascade = CascadeType.ALL)
@Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private PermissionInfoGroup myAllPermission;
//getters and setters
}
ApplicationId. java
@Embeddable
@AccessType("field")
public class ApplicationId implements Comparable<ApplicationId>, Serializable
{
public static final String GLOBAL = "GLOBAL";
@Column(name = "APPLICATION_NAME", nullable = false)
private String myApplicationName;
@Column(name = "STRATEGY_NAME", nullable = false)
private String myStrategyName;
}
PermissionInfoGroup. java
@Entity
@Table(name = "PERMISSION_GROUP")
public class PermissionInfoGroup implements DomainObject, Serializable
{
@Column(name = "OID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
private long myId;
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name="PERM_GRP_PERMS", joinColumns={@JoinColumn(name="PERMISSION_GROUP_OID")})
@Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private final Collection<PermissionInfo> myPermissionList;
}
PermissonInfo. java
@AccessType("field")
@Embeddable
public class PermissionInfo implements Cloneable, Serializable
{
@Column(name = "ACTIONS")
private String myActions;
@Column(name = "PERMISSION_CLS")
private String myPermissionClassName;
@Column(name = "IS_POSITIVE")
private boolean myPositive;
@Transient
private Permission myPermission;
@Transient
private String myAttributes;
}
Я пытаюсь понять природу Спящие запросы. Какие эквивалентные SQL запросы будут сгенерированы для следующих запросов гибернации.
1.
ApplicationInfo appInfo= findUniqueByCriteria(Restrictions.eq(
"myApplicationId.myApplicationName", applicationName));
2.
List<ApplicationInfo> appInfoList = findByCriteria(
Restrictions.in("myApplicationId.myApplicationName",
applicationNames));
Заранее спасибо.