我使用JPA实现EclipseLink和MySQL服务器作为应用程序的持久层。我的问题是,一个已经持久化并且已经有id的对象,正在通过与CascadeType.All的多对一关系再次被插入。
这里是实体:
@Entity
@Table(name = "messages")
public class Message extends DbObject {
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
public User author;
p
我有一个关于JPA-2.0 (提供者是Hibernate)关系及其在Java中的相应管理的问题。假设我有一个Department和一个Employee实体:
@Entity
public class Department {
...
@OneToMany(mappedBy = "department")
private Set<Employee> employees = new HashSet<Employee>();
...
}
@Entity
public class Employee {
...
@ManyToOne(ta
我知道有几个关于这个主题的问题,但似乎没有一个对我有效。我有一个包含以下域对象的Grails应用程序:
class Tag {
String name
}
class SystemTag extends Tag {
// Will have additional properties here...just placeholder for now
}
class Location {
String name
Set<Tag> tags = []
static hasMany = [tags: Tag]
}
我正在尝试查询已由一个或多个标签
我在jpa删除传播方面有一些奇怪的问题:我有一个对象A,它与一个对象C有一对多的关系。我有另一个对象B,它与对象C( an和B)有一对一的关系,当我尝试删除一个'A‘对象时,hibernate删除它而不删除它的C对象。但在此之前,它尝试使用第二个关系商店选择C对象
这是日志:
Hibernate: select ... from A A0_ where A0_.external_id=?
Hibernate: select ... from C C0_ inner join B B1_ on C0_.B_id=B1_.id where C0_.A_id=?
Hibernate: se
在两个类(hasOne/hasMany和belongsTo)中指定关系的用途是什么?让我们举个例子
class User {
Profile profile
}
class Profile {
String name
String age
String location
}
在本例中,User有一个Profile。那么如何指定hasOne和belongsTo关系,为什么呢?
指定关系类型的用途是什么?我们可以只使用对象,而不是在User中指定hasOne。
我的数据库中有一个公司/雇员@OneToMany关系,定义为:
@Entity
public class Employee {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@ManyToOne @JoinColumn(name="companyid")
Company company;
....
}
@Entity
public class Company {
@Id @GeneratedValue(strategy=GenerationType.I
我在读的书。关于"@OneToOne单向“,作者以以下Customer,Address为例:
@Entity
public class Customer{
@Id @GeneratedValue
private Long id;
private String name;
private Address address;
//few other columns, getters/setters
}
@Entity
public class Address{
@Id @GeneratedValue
private Long id;
priv
我使用fluent nHibernate进行映射,如下所示:
public class ContentTagMap: ClassMap<Employee>
{
public EmployeeMap()
{
Id(t => t.Id);
Map(t => t.Name);
HasManyToMany(t => t.Company);
}
}
public class CompanyMap: ClassMap<Company>
{
public HelpMap()
{
我是DDD的新手,我被困在这里:我有两个实体之间的多对多关系:用户和组。THe关系不是聚合关系,因为用户可以在没有组的情况下存在,组可以在没有用户的情况下存在。
THis是我为User类编写的代码:
public class User {
private List<Group> groups = new ArrayList<Group>();
private UserRepository userRepository;
public void create() throws Exception{
userRepository
下面是我的测试用例:
[Test, Explicit]
public void SaveDeleteSaveThrowsTest()
{
Produit produit = new Produit { Libelle = "Test" };
using (ISession session = this.SessionProvider.OpenSession())
{
session.FlushMode = FlushMode.Auto;
using (ITransaction transaction = session
在Spring中为对象数组编写代码时,我有以下代码:
TaskList parent_list = repo.findOne(listId);
Task t = new Task();
// set fields for t
parent_list.getTasks().add(t);
repo.save(parent_list);
在这里,repo是TaskList的存储库,是Spring中JpaRepository的扩展。parent_list包含一些关于自身(名称、所有者)和List<Task>的数据。
我的问题是,在调用save()之前,add()函数是如何工作的?为什
下面两个声明的确切区别是什么
B是拥有方
@Entity
class A {
@Id int id;
@OneToOne
B b;
}
@Entity
class B {
@Id int id;
@OneToOne(mappedBy="b")
A a;
}
A是拥有方
@Entity
class A {
@Id int id;
@OneToOne(mappedBy="a")
B b;
}
@Entity
class B {
@Id int id;
@OneToOne
A a;
}
我有两个实体,A和B,通过双向OneToMany关联(一个A,多个B)链接。在我的业务代码中,我有这样的内容:
A a = entityManager.find(A.class, 1L);
List<B> bs = ...; //populate some "bs" here
try{
entityManager.getTransaction().begin();
a.setBs(bs);
for (B b : bs) {
b.setA(a);
}
entityManager.getTransaction().commit();
}
我试图更好地熟悉JPA,所以我创建了一个非常简单的项目。我有一个User类和一个Address类。即使我正在向我的User类添加Address,我似乎也必须同时保持这两种情况?
用户:
import javax.persistence.*;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Entity
@Table(name = "usr") // @Table is optional, but "user" is a keyword in many SQL var
我的DB中有很多与许多相关的类别和项目。我的目标是,当我将项目添加到类别中的项目列表中时,这些项目将自动添加到DB中。我认为用CascadeType.PERSIST注释类别中的项目列表将完成这项工作,但它并不能做到,把所有的CascaseTypes枚举值也不起作用。每次提交事务时,我都会得到以下异常:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: il.co.site_bu
我有一个关于使用OneToMany关系(双向)和CascadeType.ALL的问题,基于vlad post (),使用CascadeType.ALL坚持OneToMany关系也应该坚持
Post post = new Post();
post.setName("Hibernate Master Class");
Comment comment1 = new Comment();
comment1.setReview("Good post!");
Comment comment2 = new Comment();
comment2.setReview("
我有两个班级: Equipo和Sesion。Sesion包含一个带有ManyToOne关系的Equipo equipo。
当我想要持久化一个新的Sesion时,我会执行以下操作:
1.-我创造了镇静剂。
2.-我得到了Equipo的引用
long id = findEquipo();
Equipo e = entityManager.getReference(Equipo.class, id);
3.-我设置了镇静剂的装备
sesion.setEquipo(e);
4.-最后我坚持使用新的镇静剂。
entityManager.persist(sesion);
但每次我收到一个错误,说我违反了唯