Tag: jpa

Hibernate JPA一对一保存子类实体

我使用在父方注释的PrimaryKeyJoinColumn一对一的关系。 现在我想自己保存子实体。 例如,我有Employee和EmpInfo作为子实体,我需要保存EmpInfo (当然在设置父项的id属性之后)。 但是,当使用这样的安排时,我得到下面列出的例外…… org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist 有什么想法为什么hibernate不允许这个? 为了更清楚,我的代码如下…… ParentEntity: public class Employee { private Long id; private String name; private EmployeeInfo info; private Integer enumId; @Id @GeneratedValue(strategy=GenerationType.AUTO) public Long getId() { return id; } @Column(name=”EMP_NAME”) public String getName() { return name; } @PrimaryKeyJoinColumn @OneToOne(cascade = CascadeType.REMOVE) public EmployeeInfo getInfo() { […]

创建JPA提供程序

有谁知道如何创建自己的JPA提供程序? 我正在考虑制作一个可以与我们使用的SOAP Web服务接口的自定义JPA提供程序。 但是,我似乎找不到任何描述如何创建自己的JPA提供程序的文档。 我该在哪里开始寻找?

使用persistence.xml时将Hibernate 4.0与Tomcat 7一起使用时出现JndiException

我在Tomcat 7上使用Hibernate 4.0和JPA persistence.xml文件。没有Struts,只是直接使用一些Jersey服务的Hibernate。 以下是我遇到的例外情况: Caused by: org.hibernate.service.jndi.JndiException: Unable to lookup JNDI name [jdbc/MyDB] at org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:68) at org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.configure(DatasourceConnectionProviderImpl.java:116) at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:223) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:89) at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:71) at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2273) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2269) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1738) at org.hibernate.ejb.EntityManagerFactoryImpl.(EntityManagerFactoryImpl.java:94) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904) … 8 more Caused by: javax.naming.NameNotFoundException: Name jdbc is […]

如何使用JPA生命周期事件来获取实体数据

我有一个RESTful API,它使用了一个用@EntityListners注释的实体类。 在EntityListner.java中,我有一个用@PostPersist注释的方法。 因此,当该事件触发时,我想要提取有关刚刚保存到数据库的实体的所有信息。 但是,当我尝试这样做时,Glassfish正在生成exception,并且EntityListner类中的方法未按预期执行。 这是代码 public class EntityListner { private final static String QUEUE_NAME = “customer”; @PostUpdate @PostPersist public void notifyOther(Customer entity){ CustomerFacadeREST custFacade = new CustomerFacadeREST(); Integer customerId = entity.getCustomerId(); String custData = custFacade.find(customerId).toString(); String successMessage = “Entity added to server”; try{ ConnectionFactory factory = new ConnectionFactory(); factory.setHost(“localhost”); Connection connection = factory.newConnection(); Channel […]

使用PostgreSQL,为什么Hibernate / JPA不会创建级联约束?

我有一个实体Bar : @OneToMany(cascade = CascadeType.ALL, mappedBy = “bar”) private Set fooSet; 一个实体Foo : @ManyToOne(optional = false) @JoinColumn(name = “bar_id”) private Bar bar; Hibernate在foo.bar – > bar.id上创建外键约束,但它没有指定ON DELETE CASCADE 。 为什么不? 有没有办法实现它? 或者我可以在DB中手动添加ON DELETE CASCADE (并禁用DDL生成), 这是一个好习惯吗? 而且,我是否必须以某种方式修改我的代码以让Hibernate知道数据库会自动删除相关记录? 谢谢。 更新 – 这是我的JPA / Hibernate / PostgreSQL配置: true update 更新2 – 阐明了我的意思:创建了外键约束,但我想知道为什么它没有指定ON DELETE CASCADE (相应地更改了原始问题)

如何从playframework中的超类inheritance模型

我试图了解inheritance如何发挥作用! 但尚未成功。 所以,我有这样的超类: @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) abstract class SuperClass extends Model { @Id @GeneratedValue(strategy = GenerationType.TABLE, generator = “SEQ_TABLE”) @TableGenerator(name = “SEQ_TABLE”) Long id; int testVal; } 和2个inheritance的类: @Entity public class Sub extends SuperClass { String name; @Override public String toString() { return name; } } @Entity public class Sub1 extends SuperClass { String name; […]

JPA和generics

我想知道带有generics的抽象类如何处理JPA? 我的意思是我需要什么样的注释? 考虑这些: @MappedSuperclass public abstract class AbstractMyClass { // What about Strings and Integers? Do I need some kind of @LOB? private T field; public T getField() { return field; } public void setField(T field) { this.field = field; } } 然后是这些 @Entity @Table(name = “String”) public class MyStringClass extends AbstractMyClass { } @Entity […]

JPA本机查询中的位置参数问题

我正在尝试: String sql = “SELECT email FROM users WHERE (type like ‘B’) AND (username like ‘?1’)”; List results = em.createNativeQuery(sql).setParameter(1, username).getResultList(); 但我得到IllegalArgumentException,它告诉我参数超出范围。 我究竟做错了什么?

使用@MappedSuperclass注释的类上的@SequenceGenerator

我有以下我的实体结构: @MappedSuperclass public abstract class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “seqGenerator”) private Long id; } @MappedSuperclass @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @SequenceGenerator(name = “seqGenerator”, sequenceName = “DICTIONARY_SEQ”) public abstract class Intermed extends BaseEntity {} @Entity public class MyEntity1 extends Intermed {} @Entity public class MyEntity2 extends Intermed {} 我得到以下例外: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating […]

@PreUpdate不适用于Spring Data JPA

我有一个实体: @Entity @EntityListeners(MyEntityListener.class) class MyEntity{ … } 而听众: class MyEntityListener{ @PrePersist @PreUpdate public void doSomething(Object entity){ … } } 我正在为此实体(1.4.1)和EclipseLink使用Spring Data生成的DAO。 代码行为如下: MyEntity entity = new Entity(); entity = dao.save(entity); // the doSomething() is called here // change something it the entity and save it again dao.save(entity); // the doSomething() is NOT called here, checked […]