Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

हाइबरनेट:MySQL में बाधा नाम रिक्त है

मैं निम्नलिखित समाधान लेकर आया हूं:

  1. मौजूदा हाइबरनेट MySQL5Dialect बढ़ाएँ:

    public class MySQL5Dialect extends org.hibernate.dialect.MySQL5Dialect {
    
        /**
        * Pattern to extract violated constraint name from {@link SQLException}.
        */
        private static final Pattern PATTERN = Pattern.compile(".*constraint\\W+(\\w+).*", Pattern.CASE_INSENSITIVE);
    
        private ViolatedConstraintNameExtracter constraintNameExtracter;
    
        public MySQL5Dialect() {
            constraintNameExtracter = new ConstraintNameExtractor();
        }
    
        @Override
        public ViolatedConstraintNameExtracter getViolatedConstraintNameExtracter() {
            return constraintNameExtracter;
        }
    
        private class ConstraintNameExtractor implements ViolatedConstraintNameExtracter {
    
            @Override
            public String extractConstraintName(SQLException sqle) {
                final String msg = sqle.getMessage();
                final Matcher matcher = PATTERN.matcher(msg);
                String constraintName = null;
                if (matcher.matches()) {
                    constraintName = matcher.group(1);
                }
    
                return constraintName;
            }
    
        }
    
    }
    
  2. हाइबरनेट कॉन्फ़िगरेशन फ़ाइल (hibernate.cfg.xml) में नव निर्मित बोली निर्दिष्ट करें:

    <property name="dialect">your.package.MySQL5Dialect</property>
    
  3. अब getConstraintName() वास्तविक उल्लंघन किए गए बाधा नाम लौटाएगा:

    try {
        ...
    } catch (ConstraintViolationException e) {
        LOG.error(String.format("Constraint=%s, code=%d", e.getConstraintName(), e.getErrorCode()));
    }
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL शो टेबल स्टेटस, ऑटो इंक्रीमेंट सही नहीं है

  2. रूबी डेटाटाइम MySQL तुलना के लिए उपयुक्त है

  3. mysql जॉइन, इसका अर्थ कैसे लगाया जाता है?

  4. MySQL उपयोगकर्ता दिखाएं

  5. MySQL के साथ एकाधिक डेटाबेस में चयन करें और सम्मिलित करें