小编Hol*_*olm的帖子

JPA 2.0使用Hibernate作为提供程序 - 例外:没有EntityManager的持久性提供程序

我正在尝试通过遵循Hibernate EntityManager 文档中的信息来设置一个简单的jpa 2.0项目.我已经在这几个小时了,但无论我做什么,当我尝试创建一个EntityManagerFactory时,我总是得到这个异常:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named manager1
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
    at se.mycomp.UserTest.main(UserTest.java:9)
Run Code Online (Sandbox Code Playgroud)

我发现了很多关于这个例外的类似问题,但没有我能够解决的解决方案.我在这做错了什么?

目录结构

.
??? pom.xml
??? src
    ??? main
    ?   ??? java
    ?   ?   ??? se
    ?   ?       ??? mycomp
    ?   ?           ??? UserTest.java
    ?   ?           ??? domain
    ?   ?               ??? User.java
    ?   ??? resources
    ?       ??? META-INF
    ?       ?   ??? persistence.xml
    ?       ??? log4j.properties
    ??? test
        ??? java
Run Code Online (Sandbox Code Playgroud)

我的persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0"> …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa maven

26
推荐指数
1
解决办法
8万
查看次数

如何检查是否设置了警报

我正在尝试检查我的闹钟是否有效.警报设置前,alarmIsSet方法将返回false,设置警报时为true.到目前为止一直很好,但是,在我取消报警后,alarmIsSet将继续返回true,直到我重新启动设备.我该如何解决?

public class Alarm extends Activity {
    private Intent intent = new Intent("PROPOSE_A_TOAST");

    private void alarm (boolean activate) {
        AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0);

        if(activate == true) {
            int type = AlarmManager.ELAPSED_REALTIME_WAKEUP;
            long interval = 3000;
            long triggerTime = SystemClock.elapsedRealtime();       
            am.setRepeating(type, triggerTime, interval, pi);       
        } else {
            am.cancel(pi);
        }
    }

    private boolean alarmIsSet() {
        return PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_NO_CREATE) != null;
    }
}
Run Code Online (Sandbox Code Playgroud)

android alarm alarmmanager

8
推荐指数
2
解决办法
8888
查看次数

如何在Eclipse动态Web项目中添加类路径条目作为发布/导出依赖项?

我使用Wicket快速入门成功创建了一个项目,并通过运行将其转换为Eclipse动态Web项目

mvn eclipse:清除eclipse:eclipse -Dwtpversion = 2.0

我没有任何问题地将项目导入Eclipse,但是每个JAR都收到了这个警告:

不会导出或发布类路径条目M2_REPO/**.jar.
可能会导致运行时ClassNotFoundExceptions.

我可以通过使用right click ? QuickFix每个警告并选择"将关联的原始类路径条目标记为发布/导出依赖项" 来解决此问题,但这需要花费大量时间,如果存在大量依赖项则无法实现.

必须有办法让Maven为我这样做; 它是什么?

编辑:我发现使用m2eclipse核心+ Maven集成WTP(来自m2eclipse额外)解决了我的问题.

我仍然对如何在没有m2eclipse的情况下实现这一目标感兴趣,只是出于好奇:p

eclipse maven

8
推荐指数
1
解决办法
9037
查看次数

Hibernate OneToOne延迟加载和级联

这就是我想要做的.

  1. 创建与子项具有OneToOne关系的父级
  2. 父级必须使用延迟加载来获取子级
  3. 如果父母被移除,那么孩子也是如此
  4. 如果孩子被移除,父母不应受到影响
  5. 级联更新和删除必须转换为DDL

班级家长

@OneToOne(mappedBy = "parent", cascade = CascadeType.ALL)
public Child getChild()
Run Code Online (Sandbox Code Playgroud)

班级孩子

@OneToOne(fetch = FetchType.LAZY)
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name="parent_id")
public Parent getParent()
Run Code Online (Sandbox Code Playgroud)

有点1,3,4完全工作,第5点部分工作,仍然需要解决如何翻译更新部分indo DDL.

第2点是这里的一个大问题,我目前的解决方案是父母不会懒惰加载孩子.然而,孩子懒得加载父母,但是反转注释会使级联变得混乱(第3,4和5点).

我现在很困惑,希望我错过了一些明显的东西,所以任何帮助都会非常感激.

编辑: Adeel Ansari要求的代码

'fetch = FetchType.LAZY'已添加到类Parent,否则与上面相同.

IParentDAO parentDAO = DAOFactory.getFactory().getParentDAO();

parentDAO.beginTransaction();
//findByPrimaryKey uses 'org.hibernate.Session.get(Class clazz, Serializable id)'
parentDAO.findByPrimaryKey(1l);
parentDAO.commitTransaction();
Run Code Online (Sandbox Code Playgroud)

生成的hibernate查询,一个获取Parent,一个获取Child:

Hibernate: select parent0_.id as id0_0_ from parents parent0_ where parent0_.id=?
Hibernate: select child0_.id as id1_0_, child0_.parent_id as parent2_1_0_ from childs child0_ where …
Run Code Online (Sandbox Code Playgroud)

java mysql hibernate cascade

7
推荐指数
3
解决办法
2万
查看次数

如何覆盖CursorAdapter bindView

我正在尝试显示a Cursor中的信息ListView,每行包含a ImageView和a TextView.我有一个CustomCursorAdapter扩展CursorAdapter,在bindView我评估光标数据和基于设置视图图像和文本.

当我运行应用程序时,ListView显示正确的行数,但它们是空的.我知道我在覆盖bindView时遗漏了一些东西,但我不确定是什么.

任何帮助将不胜感激.

private class CustomCursorAdapter extends CursorAdapter {

  public CustomCursorAdapter() {
    super(Lmw.this, monitorsCursor);
  }

  @Override
  public View newView(Context context, Cursor cursor, ViewGroup parent) {
    LayoutInflater layoutInflater = getLayoutInflater();

    return layoutInflater.inflate(R.layout.row, null);
  }

  @Override
  public void bindView(View view, Context context, Cursor cursor) {
    try {
      int monitorNameIndex = cursor.getColumnIndexOrThrow(DbAdapter.MONITORS_COLUMN_MONITOR_NAME);
      int resultTotalResponseTimeIndex = cursor.getColumnIndexOrThrow(DbAdapter.RESULTS_COLUMN_TOTAL_RESPONSE_TIME);

      String monitorName = cursor.getString(monitorNameIndex);
      int warningThreshold = cursor.getInt(resultTotalResponseTimeIndex);

      String lbl = …
Run Code Online (Sandbox Code Playgroud)

sqlite android overriding cursor

5
推荐指数
1
解决办法
7554
查看次数

使用Hibernate将文件保存在mysql数据库中

我正试图找出使用Hibernate在mysql数据库中保存/检索文件的'正确',故障保护方法.该解决方案必须处理非常大的文件,因此最小化内存占用将非常重要.

到目前为止我的解决方案:

包含java.sql.Blob字段的模型类,使用"@Lob"注释的getter.

public static void main(String[] args) {
    DAOFactory factory = DAOFactory.getFactory();
    IResultExtraDAO resultExtraDAO = factory.getResultExtraDAO();
    factory.getResultExtraDAO().beginTransaction();

    ResultExtra resultExtra = new ResultExtra();
    LobHelper lh = HibernateUtil.getSession().getLobHelper();
    try {
        File file = new File("/3030.jpg");
        FileInputStream fis = new FileInputStream(file);
        Blob b = lh.createBlob(fis, fis.available());
        resultExtra.setFile(b);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    resultExtraDAO.save(resultExtra);

    factory.getResultExtraDAO().commitTransaction();
}
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?如果有manny simultanious上传和/或大文件,是否有可能用完memmory?还有其他解决方案会更好吗?

另外,我正在使用' 通用数据访问对象 '模式封装hibernate,所以我不喜欢像我这样直接访问HibernateUtil,但到目前为止我还没有想出一个很好的通用方法来访问它.欢迎提出建议.

java mysql hibernate

5
推荐指数
1
解决办法
6071
查看次数

标签 统计

hibernate ×3

java ×3

android ×2

maven ×2

mysql ×2

alarm ×1

alarmmanager ×1

cascade ×1

cursor ×1

eclipse ×1

jpa ×1

overriding ×1

sqlite ×1